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

时间:2009-12-18 00:10:36

标签: f# lambda

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

不会这样:

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

与此同样具有表现力吗?:

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

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

3 个答案:

答案 0 :(得分:22)

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

let x y = y z -> y z

x是否在函数y上调用z -> y z或忽略其参数并返回函数y z -> y z

答案 1 :(得分:16)

已经有很多不错的投机答案......我会加入其中:

F#的核心语言与OCaml兼容,OCaml使用“fun”。

答案 2 :(得分:-1)

我知道作为currying的一部分,(请参阅此post),您可以替换:

let countOneToTen = fun y List.map(fun x -> x + 1) y
countOneToTen = [1..10]

let countOneToTen y = List.map(fun x -> x + 1) y
countOneToTen = [1..10]

没有有趣的关键字。