该函数如何返回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