関数プログラミングのテキストって、
末尾再帰はループに最適化可能と書いてる割りには、
例題のコードでは末尾再帰になっていない事が多い様な気がする。
# let null l = (l = );;
val null : 'a list -> bool =
(* 末尾再起で・・・ *)
#let size l =
let rec iter l n =
match l with
-> n
| hd::tl -> iter tl (n+1)
in
iter l 0;;
val size : 'a list -> int =