【发布时间】:2014-10-26 10:19:38
【问题描述】:
我刚刚开始学习标准 ML(以及一般的函数式编程),并且遇到了两种不同的函数定义方式。
val double = fn x => x*2:
和
fun double x = x*2;
如果我理解正确,第一个是将变量分配给匿名函数。在什么情况下我应该这样做而不是fun abc?
【问题讨论】:
标签: function anonymous-function sml ml
我刚刚开始学习标准 ML(以及一般的函数式编程),并且遇到了两种不同的函数定义方式。
val double = fn x => x*2:
和
fun double x = x*2;
如果我理解正确,第一个是将变量分配给匿名函数。在什么情况下我应该这样做而不是fun abc?
【问题讨论】:
标签: function anonymous-function sml ml
这是一个风格问题。 fun 语法is syntactic sugar for fn,所以你可以用前者写的任何东西也可以用后者写。
fn 直接表示 λ 抽象,这意味着它仅限于一个参数的函数(请参阅this SO question)。 fun 是一种方便的简写方式,它允许您使用curry 一个多参数函数并使用一点语法将名称绑定到它,因此当您想做其中一件事情时,最好使用fun。
【讨论】:
fun,因为它更容易阅读