【发布时间】:2020-01-28 22:17:49
【问题描述】:
我开始学习 Haskell,所以我也需要了解柯里化(这也是我第一次看到这种技术)。我想我明白了它在某些情况下是如何工作的,其中 currification 只“消除”了其中一个参数。就像在下一个示例中,我试图计算 4 个数字的乘积。 这是未柯里化的函数:
prod :: Integer->Integer->Integer->Integer->Integer
prod x y z t = x * y * z * t
这是柯里化函数:
prod' :: Integer->Integer->Integer->Integer->Integer
prod' x y z = (*) (x*y*z)
但我不明白如何继续这种动态,例如只使用两个参数执行相同的函数等等:
prod'' :: Integer->Integer->Integer->Integer->Integer
prod'' x y =
【问题讨论】:
-
首先你需要意识到 Haskell 中的每个函数最多有一个参数。
-
@bipll 和 at least 一个参数。 IOW,每个函数都有恰好一个参数。
-
@leftaroundabout
zero = 0 -
@bipll 这不是一个函数。
zero的类型中没有->。
标签: haskell currying pointfree tacit-programming