2016-05-06 17 views
-2

私はHaskellによるHaskellのプログラミングを勉強しています。 INTがあるためn個の整数として、+ 1を受け入れnはいないように思えN + 1 :以下ハスケル再帰型int2nat

は、102ページ

上のコード私はパターンでパースエラーを取得しています
int2nat :: Int -> Nat 
int2nat 0 = Zero 
int2nat (n+1) = Succ (int2nat n) 

です。 この問題を解決するにはどうすればよいですか? は、私はまた、あなたが "N + k個のパターン" ウィッヒはHaskellでサポートされていない使用しているdata Nat = Zero | Succ Nat deriving Show

答えて

1

data Nat = Zero | Succ Nat 

を変更しようとしました。

あなたは、このようにコードを変更する必要があります

int2nat :: Int -> Nat 
int2nat 0 = Zero 
int2nat n = Succ (int2nat (n-1)) 

コメントに書かれている方法は、より多くのためにhereをお読みください。

また、負の数を挿入すると、終了しません。 この問題を回避するには、これを試してみてください。

int2nat :: Int -> Nat 
int2nat 0 = Zero 
int2nat n | n < 0 = Zero 
      | otherwise = Succ (int2nat (n-1))