我看到一些实现如下:
let rec fact =
fun n ->
if n <= 0 then 1 else n * fact (n - 1)
另一个实现是:
let rec fact n =
if n <= 0 then 1 else n * fact (n - 1)
有人能告诉我这两种风格之间是否有任何区别?
答案 0 :(得分:6)
这些定义是等效的。符号
let rec f a b c = <expr>
是一种方便的写作方式(语法糖):
let rec f = fun a b c -> <expr>
您可以在section 6.7.1 of the OCaml manual标题本地定义标题下找到此内容。
答案 1 :(得分:5)
语法糖没有区别。第二种形式被定义为等同于第一种形式。
第二种形式通常是出于文体方面的首选:你知道你在定义一个函数的let
行。在第一个中,您必须阅读fun
才能理解这一点。