【发布时间】:2017-02-23 07:29:37
【问题描述】:
我注意到在 SML 中有两种定义函数的方法。比如你拿add函数,有两种方式:
fun add x y = x+y;
fun add(x,y) = x+y;
第一个方法创建函数类型为:
val add = fn : int -> int -> int
第二个创建函数类型为:
val add = fn : int * int -> int
对于同一个功能,这两种类型有什么区别?还有为什么同一个函数有两种类型?
【问题讨论】:
-
在 int -> int -> int 的情况下,是不是因为currying where add first 取一个 int,返回另一个函数,该函数取另一个 int 并返回 final int?
标签: functional-programming sml smlnj ml