|
|
1
42
尝试一些更简单的方法来看看这是如何工作的。例如,这里有一个版本的
基本模式就在那里,缺失的部分就是有趣的事情发生的地方。continuation参数是一个期望接收结果的函数——因此,如果列表为空,显然我们应该发送它
现在,当列表不为空时,我们用列表的尾部递归地调用函数(换句话说,这是一个迭代),但问题是,这个延续应该是什么。这样做:
显然是错误的——这意味着
这是越来越接近,但仍然是错误的。但这是一个很好的考虑事情是如何运作的点——我们打电话来
终于开始工作了。(顺便说一句,记住每一个
最后请注意,这与:
如果你把构图弄清楚的话。 (您也可以在中级+lambda学生语言中使用此代码,然后单击“步进器”按钮查看评估的进展情况--这将需要一段时间才能完成,但您将看到如何嵌套延续函数,每个函数都有自己的列表视图。) |
|
2
1
这里有一种方法可以帮助你“得到一个更具体的想法”。想象一下,如果收集器是这样定义的:
在基本情况中可以看到,如果传入空列表,它将使用参数调用函数
祝你好运! |