OCaml评估表达式,命令?

Jun*_* Oh 3 evaluation ocaml expression

add 是一个内置于OCaml的函数.

经验:

# add 5 1;;
- : int = 6
Run Code Online (Sandbox Code Playgroud)

我的问题:评估的顺序是add 3 (add 5 3)什么?

# add 3 (add 5 3);;
- : int = 11
Run Code Online (Sandbox Code Playgroud)

(add 5 3)第一至8评价,然后add 3 (8)进行评估,以11?或者add 3先评估一个函数,然后(add 5 3)用作函数的参数(add 3)

谢谢.

Jef*_*eld 7

对于它的价值,没有任何名为add内置于OCaml的功能.(即,Pervasives模块中没有这样的符号.)

$ ocaml
        OCaml version 4.06.0

# add;;
Error: Unbound value add
Run Code Online (Sandbox Code Playgroud)

OCaml中函数及其参数的评估顺序未指定.所以没有保证订单.

在OCaml手册的第7.7.1节中有记录.

如果您希望按特定顺序let进行评估,则可以使用它来评估每个子表达式:

# let add a b = a + b;;
val add : int -> int -> int = <fun>
# let temp = add 5 3 in
  add 3 temp;;
- : int = 11
# let tempf = add 3 in
  tempf (add 5 3);;
- : int = 11
Run Code Online (Sandbox Code Playgroud)