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)?
谢谢.
对于它的价值,没有任何名为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)