【发布时间】:2016-07-14 09:50:15
【问题描述】:
阅读https://wiki.haskell.org/Currying
它说:
很多时候,新程序员可以忽略柯里化。这 将所有函数视为 curried 的主要优点是 理论上的:当所有函数都被处理时,形式化证明更容易 一致(一个参数输入,一个结果输出)。话虽如此,有 是您需要了解的 Haskell 习语和技术 咖喱。
什么是需要更深入地理解柯里化的 Haskell 技术/习语?
【问题讨论】:
-
应用函子是柯里化如何影响惯用 Haskell 的一个很好的例子。
Applicative的<*>方法是在f (a -> b)上定义的,它是一个参数函数的函子,但是由于所有函数都是柯里化的,所以 all 函数都是一个参数,所以<*>函数适用于任意数量的函数。 -
flip id的类型是什么?它有什么作用? -
也许需要最深刻的理解才能理解像
printf这样的疯狂事物,但我不建议你直接跳入那种复杂性。 -
柯里化看起来像一些简单的语法级快捷方式。但它实际上允许您迭代任意数量的函数参数。这就是(例如)QuickCheck 能够透明地测试 N 元函数的方式。