【发布时间】:2020-11-06 16:20:21
【问题描述】:
我正在尝试弄清楚如何使用 lambda 表达式,我发现它们通常用于 foldl 或 foldr 等函数中。
我想知道为什么下面的代码不起作用:
ExMin = foldr (\x y -> x < y) 5 [1,2,3,4]
我希望这个函数给我列表中的最小数字,但是它给出了错误。 我在想它出错的原因是因为 x
关于如何让它正确返回数字的任何想法?
【问题讨论】:
-
foldr (\x y -> x < y) 5 [1,2,3,4]将评估为1 < (2 < (3 < (4 < 5))))这是错误的类型,因为它试图将数字与布尔值进行比较。 lambda 必须返回可以反馈给与第二个参数相同的 lambda 的东西,即它必须具有a -> b -> b形式的类型。