我是Haskell的新手,正在寫我的第一個數據結構。Haskell數據「錯誤 - 控制堆棧溢出」
data Nat = Null | N Nat
例如:5
是N (N (N (N (N Null))))
我不得不從Show, Eq, Ord, Num, Enum
創建實例,我寫Eq
已經和它的作品。
instance Eq Nat where
(==) Null Null = True
(==) (N Null) (N Null) = True
(==) Null (N Null) = False
(==) Null (N xs) = False
(==) (N xs) (N xs2) = xs == xs2
但是,當我在擁抱中嘗試這個,它給了我一個錯誤(「錯誤 - 控制堆棧溢出」)。
我無法繼續。
(N (N Null)) :: Nat
我在想什麼?
我想這裏的問題是你的'Show'。如果這是你的查詢,你永遠不會調用'(==)'。還要注意,dat擁抱基本上已經死了(自2006年iirc以來),所以也許你最好使用GHC。 –
你也忘了'(N x)== Null'的情況。 –
謝謝你的回答和時間!但在ghci中它仍然是一個堆棧溢出 –