短絡
&& は特殊構文か何かだと思ってた。普通に再定義できるとは…。
# false && raise Exit;; - : bool = false # let (&&) = (&&);; val ( && ) : bool -> bool -> bool = <fun> # false && raise Exit;; Exception: Pervasives.Exit.
括弧は結合を変えるだけじゃないみたい。
# (&&) false (raise Exit);; - : bool = false # ((&&) false) (raise Exit);; Exception: Pervasives.Exit.