我是 Haskell 的新手,在处理小程序时,我发现关于 lambda 函数的功能几乎没有混淆。
lastThat :: (a -> Bool) -> a -> [a] -> a
lastThat f = foldl (\x acc -> if f x then x else acc)
执行lastThat (>0) 100 [-1,-4,5,7,9,-10]
我得到 100 。在使用以下定义时
lastThat :: (a -> Bool) -> a -> [a] -> a
lastThat f = foldl (\acc x -> if f x then x else acc)
& 然后执行lastThat (>0) 100 [-1,-4,5,7,9,-10]
我得到了 9 的预期。
为什么它不适用于第一个定义?