相关疑难解决方法(0)

左右折叠无限列表

我有以下段落的问题来自Learn You A Haskell(伟大的书imo,而不是贬低它):

一个很大的区别是右侧折叠在无限列表上工作,而左侧折叠不起作用!说白了,如果你在某个点拿一个无限列表并从右边折叠起来,你最终会到达列表的开头.但是,如果你在一个点上获得一个无限的列表,并且你试图从左边折叠起来,那么你永远不会达到目的!

我只是不明白这一点.如果你拿一个无限的列表并试图从右边折叠起来那么你将不得不从无穷远点开始,这就是没有发生(如果有人知道你能做到这一点的语言,请告诉:p ).至少,你必须根据Haskell的实现开始那里,因为在Haskell中,foldr和foldl不会采用一个参数来确定列表中应该开始折叠的位置.

我同意引用iff foldr和foldl接受确定列表中应该开始折叠的位置的参数,因为有意义的是,如果你采用无限列表并从定义的索引开始向右折叠它最终终止,而它不会无论你从哪里开始左折; 你将向无限折叠.但是,foldr和foldl 接受这个参数,因此引用没有意义.在Haskell中,无限列表上的左侧折叠和右侧折叠都不会终止.

我的理解是正确的还是我错过了什么?

haskell functional-programming list infinite fold

70
推荐指数
3
解决办法
7390
查看次数

标签 统计

fold ×1

functional-programming ×1

haskell ×1

infinite ×1

list ×1