小编pep*_*e22的帖子

在Haskell中混合折叠器与OR(懒惰?)

该函数如何返回true?

foldr (||) False [True,undefined] 

=> True
Run Code Online (Sandbox Code Playgroud)

第一个折叠看起来像这样:

undefined || True 
Run Code Online (Sandbox Code Playgroud)

,这应该返回一个错误

因此,我猜测haskell优先考虑OR函数的懒惰,而不是逐步进行折叠.找到一个True在途中并在开始折叠之前返回

它是否正确?在那种情况下,haskell是否总是优先于非惰性函数的惰性函数?我认为这是懒惰的定义,但似乎可以改变错误的答案

evaluation haskell functional-programming declarative lazy-evaluation

6
推荐指数
1
解决办法
108
查看次数