あなたの質問は明確ではないので、変換から始めます:
toPeano 0 = Zero
toPeano 1 = Succ Zero
toPeano 2 = Succ (Succ Zero)
これはかなり明確です。単純な再帰を使用してペアノ数を定義し、それをすべての自然数で機能させることができます。
toPeano 0 = Zero
toPeano x
| x < 0 = error "Can not convert a negative number to Peano"
| otherwise = Succ (toPeano (x-1))
ここでの核心はSucc (toPeano (x-1))
- これは整数から 1 を引き、ペアノ構造に 1 を足すだけです。
では、反対方向はどうでしょうか。「Succ」が表示されるたびに、次のように追加できます。
fromPeano Zero = 0
fromPeano (Succ x) = 1 + fromPeano x -- note this is inefficent but right now we don't care
結果の印刷
質問のように見えたあなたの発言の唯一の部分は次のとおりです。
整数を指定して Peano Numbers を出力する方法がわかりません。
これはペアノ数とは関係ありませんが、GHCi では次の関数のいずれかを実行できます。
> fromPeano (toPeano 5)
5
または、プログラムを作成して、print
結果を印刷するために使用できます。
main = print (toPeano 5829)
GHC を使用してプログラムをコンパイルします。
$ ghc --make myProg.hs
$ ./myProg
Succ (Succ (Succ (...