有没有人能给我解释一下拍马的概念。我之所以学习它,主要是因为我们在我的“现代编程语言”课上学习ML,以学习函数式语言入门。
特别是,您可以使用此示例:
-fun g a = fn b => a+b;
val g = fn: int -> int -> int
-g 2 3;
val it = 5 : int我搞不懂这些参数是如何传递的,或者根本就不知道该怎么考虑它。
谢谢你的帮助。
发布于 2012-10-16 15:03:37
在这种情况下,您需要显式地使用currying,因此应该更容易理解。
如果我们阅读函数定义,它会说:“创建一个函数g,当给出一个a时,它将返回fn b => a+b。”
也就是说,如果我们调用g 2,我们会得到函数fn b => 2+b。因此,当我们调用g 2 3时,我们实际上调用了(g 2) 3;也就是说,我们首先得到上面声明的函数,然后在值3上使用这个函数,产生5。
Currying简单地说就是在几个“阶段”中创建一个函数的概念,每个阶段都接受一个输入并产生一个新函数。对于这一点,SML有语法上的优势,使g等同于:
fun g a b = a + b;https://stackoverflow.com/questions/12906348
复制相似问题