在无限列表上左右折叠
我对“了解您的Haskell”(很棒的书imo,不要轻描淡写)中的以下文章有疑问: 一个很大的不同是,右折叠在无限列表上起作用,而左折叠则不行!简而言之,如果您在某个时间点取一个无限的列表,然后将其从右侧折叠起来,最终您将到达列表的开头。但是,如果您在某个点取一个无限的列表,然后尝试将其从左向上折叠,那么您将永远无法结束! 我就是不明白这一点。如果您获取一个无限列表,然后尝试从右侧将其折叠起来,那么您将不得不从无穷大的那一点开始,这只是没有发生(如果有人知道您可以使用的语言,请告诉:p )。至少,您必须根据Haskell的实现从那里开始,因为在Haskell foldr和foldl中,不需要使用确定在列表中应该从何处开始折叠的参数。 我同意报价单iff foldr和foldl的参数确定了它们应该在列表中的何处开始折叠,因为有意义的是,如果您从无限的列表开始并从已定义的索引开始折叠,它将最终终止,而实际上不管你从左折开始 您将向无限折叠。但是,foldr和foldl不接受此参数,因此引号没有意义。在Haskell中,无限列表上的左折和右折都不会终止。 我的理解正确吗?还是我缺少什么?