私はSMLで練習していて、次のように定義されたチャーチ数を実装する必要がある小さな割り当てを行っています。
datatype 'a church = C of ('a -> 'a) * 'a -> 'a
例val
ZERO = C(fn (f,x) => x)
私はすでに関数を実装しました:
create: int -> 'a church
churchToInt: 'a church -> int
SUC
チャーチ数の後継を返します。
今、私は関数を実装する必要があります
PRED: 'a church -> 'a church * 'a church
(前の、現在の数字)のタプルを返します。使用は許可されていませんchurchToInt
。チャーチ数を直接使用する必要があります。どうやらこれは特定の引数を渡すことによって1行で解決可能です。
SUC
正しい数字になるまで何度も使うことを考えていましたが、2つのチャーチ数を比較する方法がありません。私はこれに完全に固執しています。