LoginSignup
0
0

More than 5 years have passed since last update.

OCamlでチャーチ数【メモ】

Posted at

背景

最近、五十嵐淳先生の「プログラミング言語の基礎概念」という本を読んで、興味が湧いたので自分の忘備録として残しておきます。

やっていく

ここでチャーチ数は高階関数として表され、関数fと値xを受け取り、fにxをn回適用する関数として定義します。
まず、ゼロと後続数を定義します。

let zero f x = x
let succ n f x = f (n f x)

すると、自然数1を表すoneと自然数2を表すtwoはこうなります。

let one = succ zero
let two = succ (succ zero)

加算を定義してみます。

let add n1 n2 f x = n1 f (n2 f x)

チャーチ数をOCamlの整数に変換する関数を定義してみます。

let to_int n = n (fun k -> k+1) 0

感想

楽しい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0