相互再帰

2つ(あるいはそれ以上)の関数を and でつないでいっぺんに定義できるがおもしろい。
and の後の関数には let rec が要らない。

 # let rec even n =
     if n = 0 then true else odd (n - 1)
   and odd n =
     if n = 0 then false else even (n - 1)
   ;;
 val even : int -> bool = <fun>
 val odd : int -> bool = <fun>
 # even 3;;
 - : bool = false
 # even 4;;
 - : bool = true
 # odd 5;;
 - : bool = true
 # odd 8;;
 - : bool = false