我一直在试图理解SML中的高阶函数。我知道如何编写简单的高阶函数并且也理解签名。一个例子是:SML中高阶函数的签名
fun increment list = map (fn x=> x + 1) list;
val it = fn: int list -> int list
但是,我无法理解下面的高阶函数的签名:
fun add x y = x + y;
val add = fn: int -> int -> int
该功能可以写成:
fun add (x,y) = x+y;
val add: fn : (int * int) -> int
,我明白了。但在前面的函数中,我不明白操作的顺序是如何工作的。该函数是否同时采用两个参数,或者一次只需要一个参数,生成一个新的函数,然后生成所需的结果?它对于其他更高阶的函数将如何工作?
我需要为我的作业构建高阶函数签名的概念,以及在几周内提出的考试。
是的,所以例如当你调用'add 2'时,你应该把它看作是取回函数'(fn y => 2 + y)',这个函数只需要替换所有出现的'x'值为'2'。 – RasmusWL 2014-10-08 14:09:05