我正在阅读一些笔记,发现这段代码对我来说看起来很干净:
# 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)
. 这应该是什么意思,为什么这个功能有用?我做了一些谷歌搜索,并in
从 Ocaml 网站获得了一些关于关键字的信息,但这对我来说毫无意义。这是我发现的:
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)
。