OCaml

練習問題 4.6 コンビネータ

練習問題 4.6

恒等関数を s k k で表現したように、関数 fun x y -> y を、コンビネータ s と k を関数適用のみで、(fun や let による関数定義を使わずに)組み合わせた形で表現せよ。

(* 練習問題 4.6 *)
(*
 * 恒等関数を s k k で表現したように、関数 fun x y -> y を、
 * コンビネータ s と k を関数適用のみで、(fun や let による
 * 関数定義を使わずに)組み合わせた形で表現せよ。
 *)

      
(* Kコンビネータ *)
let k x y = x;;

let test1 = k 23 45 = 23;;

(* Sコンビネータ *)
let s x y z = x z (y z);;

let test3 = s k k 5 = 5;;

let test4 = (fun x y ->  y) 2 4 = 4;;

let f x y = k (s k k) x y;;

let test5 = f 3 4 = 4;;

let test6 = k (s k k) 3 4 = 4;;