【发布时间】:2021-01-29 00:55:33
【问题描述】:
最近我一直在学习haskell中的组合,现在对这个例子有点困惑。
(const . min) 3 0 4
结果我得到 3,所以在内部它必须像这样计算:
const (min 3) 0 4
但我想既然 min 有两个参数,它应该是这样的:
const (min 3 0) 4
因此,显然组合只采用了这个参数,在本例中为 3,而不是像我预期的那样使用 min 的所有参数。这是否意味着组合在默认情况下只接受一个参数,或者我在这里没有得到什么?
【问题讨论】:
-
所有 Haskell 函数都有一个参数。例如。
min 3 0将 (1-arg) 函数min应用于参数3。结果是一个 (1-arg) 函数,然后将其应用于0。结果是数字0。我们当然喜欢将min视为一个 2-arg 函数,但从技术上讲,Haskell 中没有这样的东西。连贯地,组合由两个(1-arg)函数组成。要组合“2-arg”函数(即 1-arg 返回 1-arg 函数),需要一些其他运算符,或者简单地使用 lambda。
标签: haskell composition