2

私は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つのチャーチ数を比較する方法がありません。私はこれに完全に固執しています。

4

2 に答える 2

2

Nの pred を与える関数を作成したいとします。この (0,1) (1,2) ....(n,n+1) のような数値でペアを使用しsuccPair、(n-1,n) から (n,n+) に移動する関数を作成する必要があります。 1)次に、(0,1)にsuccPair Nsnd回適用し、最後のステップで、説明した最後の結果に適用すると、ブームになります!Nの pred を取得する には、ここで画像を取得してください http://m2-info-upmc.blogspot.fr/2012/11/predecesseur-sur-les-entiers-de-church.html

于 2013-02-16T20:04:16.540 に答える
-2

subPred の int によってそれを強制したに違いありません。

于 2010-09-30T01:13:05.433 に答える