我刚刚开始学习标准ML(以及一般的函数式编程),并且我遇到了两种不同的定义函数的方法。
val double = fn x => x*2:
和
fun double x = x*2;
如果我理解正确,第一个是将变量分配给匿名函数。在什么情况下我应该这样做而不是fun abc
?
答案 0 :(得分:2)
这是一个风格问题。 fun
语法is syntactic sugar for fn
,所以你可以用前者写的任何内容都可以用后者编写。
fn
直接表示λ抽象,这意味着它仅限于一个参数的函数(参见this SO question)。 fun
是方便的简写,允许你curry一个多参数函数,并用一点语法将名称绑定到它,所以最好随时使用fun
做其中一件事。