チューリングの賢人鳥 let rec turing's_sage f x = f (turing f) x;; turing's_sage (fun f x -> if x = 0 then 1 else x * (f (x-1))) 5;;
カリーの雲雀 let lark x (`M y) = x (fun z -> y (`M y) z);; let curry's_sage f x = lark f (`M (lark f)) x;; curry's_sage (fun f n -> if n = 0 then 1 else n * (f (n-1))) 5;;