什么时候我应该使用val x = fn而不是fun x

时间:2014-09-02 07:56:16

标签: function anonymous-function sml ml

我刚刚开始学习标准ML(以及一般的函数式编程),并且我遇到了两种不同的定义函数的方法。

val double = fn x => x*2:

fun double x = x*2;

如果我理解正确,第一个是将变量分配给匿名函数。在什么情况下我应该这样做而不是fun abc

1 个答案:

答案 0 :(得分:2)

这是一个风格问题。 fun语法is syntactic sugar for fn,所以你可以用前者写的任何内容都可以用后者编写。

fn直接表示λ抽象,这意味着它仅限于一个参数的函数(参见this SO question)。 fun是方便的简写,允许你curry一个多参数函数,并用一点语法将名称绑定到它,所以最好随时使用fun做其中一件事。