F#:"有趣"的关键字是否必要?

rys*_*ama 20 lambda f#

我正在输入"fun"关键字,然后我记得你不必在C#中

不会这样:

List.map (x -> x + 1) [1..10]

和这个一样富有表现力吗?:

List.map (fun x -> x + 1) [1..10]

这让我很好奇为什么"fun"关键字是必要的.有人可以澄清为什么"fun"关键字在语法上是必需的吗?

Chu*_*uck 23

没有它,语言就会模棱两可.

let x y = y z -> y z
Run Code Online (Sandbox Code Playgroud)

是否x调用y该函数z -> y z或它忽略它的参数和返回值的功能y z -> y z

  • 但是你刚刚把`fun`变成了`()`.C#可以通过没有lambdas的特殊语法而逃脱,因为它具有更复杂的语法.在像F#这样的语言中,我看不出你怎么能用某种分隔符来说"OK,lambda会出现!" (8认同)
  • 我不认为这是模棱两可的,大多数语言都有很多歧义,并且有一些优先规则可以用来"打破"模糊性.这可能是另一个这样的情况. (3认同)

Bri*_*ian 16

很多体面的投机答案已经......我将添加到混音中:

F#的核心语言与OCaml兼容,OCaml使用"fun".