プログラミング in OCaml #7
プログラミング in OCaml (目次) - kengpong
(* 練習問題 4.1 uncurry を定義 *) let curry f x y = f (x, y);; let average (x, y) = (x +. y) /. 2.0;; let curried_avg = curry average;; let uncurry f (x, y) = f x y;; let avg = uncurry curried_avg in avg (4.0, 5.3);; (* 練習問題 4.2 repeat を使って fib を定義 *) let rec repeat f n x = if n > 0 then repeat f (n - 1) (f x) else x;; let fib n = let (fibn, _) = repeat (fun (x, y) -> (x + y, x)) n (0, 1) in fibn;; (* 練習問題 4.6 関数 fun x y -> y を コンビネータ s と k を組合せて表現 *) let f x y = k (s k k) x y;;
うーん、だんだん難しくなってきたなー。
4.6 は全くわからなかったのでカンニング。
答え見てもパッと見だと全くわからないところが面白い