在OCaml中,当使用
这并不直观。这种行为的原因是什么?
考虑下面的代码:
let
为短路操作符(&&
或||
)赋一个别名时,它不再短路操作数的求值。这并不直观。这种行为的原因是什么?
考虑下面的代码:
let f() = Printf.printf "f"; false;;
let g() = Printf.printf "g"; true;;
let a = (&&);;
f() && g();; (* outputs 'f' *)
(&&) (f()) (g());; (* outputs 'f' *)
a (f()) (g());; (* outputs 'gf' *)
这也发生在使用let ... in
时,因此let b = (&&) in b (f()) (g());;
也会输出gf
。