我对 向你学习 Haskell中的以下段落有疑问(这是一本很棒的书,不是贬低它) :
一个很大的区别是,这是正确的 折叠在无限的列表上起作用,而左边的列表不起作用 简单地说,如果你在某个时刻取一个无限的列表,然后把它折叠起来 从右边开始,你最终会到达列表的开头。 但是,如果你在一个点上有一个无限的列表,你试图折叠 从左往上,你永远也到不了终点!
我就是不明白。如果你把一个无限的列表从右边折叠起来,那么你必须从无穷远点开始,这是不可能的(如果有人知道一种语言你可以做到这一点,请告诉: p)。至少,你必须根据 Haskell 的实现从那里开始,因为在哈斯克尔,foldr 和 foldl 没有参数来决定它们应该从哪里开始折叠。
我同意引用 iff foldr 和 foldl 的参数决定了它们应该从列表中的哪个位置开始折叠,因为如果你从一个定义好的索引开始折叠一个无限的列表,那么 威尔最终会结束,而从左折叠的位置开始并不重要,你会折叠到无穷远处。但是 foldr 和 foldl不要使用这个参数,因此引号没有意义。在哈斯克尔,无限长列表 abc2上的左折叠和右折叠。
我的理解正确吗,还是我遗漏了什么?