哈斯克尔 - 关于咖喱

elf*_*elf 5 haskell

在Haskell中,所有功能都是最初的咖喱,对吗?

那么,让我们来看一下这个max函数吧,我会写下我对它是如何工作的理解.

当我写这样的东西时:

max 4 5
Run Code Online (Sandbox Code Playgroud)

会发生的是创建一个内部值为4的新函数,然后接收一个值,因此将此函数应用于5并返回正确的值?

我是以某种方式说错了还是这是正确的?

小智 9

那是对的.通过记住两个最重要的身份,你可以记住什么是currying:

-- Function type right-associativity:
a -> b -> c = a -> (b -> c)

-- Function application left-associativity:
f x y = (f x) y
Run Code Online (Sandbox Code Playgroud)

这两种身份共同发挥作用,产生一种讨厌的语言.