3

有人可以向我解释一下咖喱的概念。我主要是在学习它,因为我们正在我的“现代编程语言”课程中学习 ML,以进行功能性语言介绍。

特别是你可以使用这个例子:

    -fun g a = fn b => a+b;
      val g = fn: int -> int -> int
    -g 2 3;
      val it = 5 : int

我很困惑这些参数是如何传递的,或者一开始是如何考虑的。

感谢您的任何帮助。

4

1 回答 1

4

在这种情况下,您使柯里化显式化,因此应该更容易理解。

如果我们阅读函数定义,它会说(释义):“创建一个函数g,当给定一个a返回时fn b => a+b。”

也就是说,如果我们调用g 2,我们会取回函数fn b => 2+b。因此,当我们调用 时g 2 3,我们实际上调用了(g 2) 3; 也就是说,我们首先取回上述函数,然后在 value 上使用这个函数3,yield 5

柯里化只是在几个“阶段”中创建一个函数的概念,每个阶段接受一个输入并产生一个新函数。SML 对此有语法糖,g相当于以下内容:

fun g a b = a + b;
于 2012-10-16T07:03:36.800 回答