【发布时间】:2013-11-06 12:28:22
【问题描述】:
我正在阅读一些笔记,发现这段代码对我来说看起来很干净:
# let sigma f m =
let rec sum (i, z) =
if i = m then z else sum(i+1, z+.f i)
in sum(0, 0.0);;
val sigma : (int -> float) -> int -> float = <fun>
# sigma (function k -> float (k*k)) 10;;
- : float = 285.
除了in sum(0, 0.0) 的部分外,我理解每一点。好吧,问题实际上与in 关键字无关,而是:sum(0, 0.0)。这应该是什么意思,为什么这个功能有用?我做了一些谷歌搜索,并从 Ocaml 网站的 in 关键字上得到了一些东西,但这对我来说毫无意义。这是我发现的:
class-expr ::= class-path
∣ [ typexpr {, typexpr} ] class-path
∣ ( class-expr )
∣ ( class-expr : class-type )
∣ class-expr {argument}+
∣ fun {parameter}+ -> class-expr
∣ let [rec] let-binding {and let-binding} in class-expr
∣ object class-body end
我不需要解释实际功能。我需要帮助的是那个小小的in sum(0, 0.0)。
【问题讨论】:
-
我对这个问题投了反对票,但回答了这个问题,因为我觉得这个问题很令人困惑,而且任何关于 Ocaml 的教程都比我们在几分钟内能解释得更好。
标签: function functional-programming ocaml