저는 하스켈에서 초보자이고 첫 번째 데이터 구조를 쓰고 있습니다.하스켈 데이터 "오류 - 스택 오버플로 제어"
예를 들어data Nat = Null | N Nat
: 5
내가 이미 Eq
를 작성하고 작동 Show, Eq, Ord, Num, Enum
에서 인스턴스를 생성해야 N (N (N (N (N Null))))
입니다.
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
무엇이 누락 되었습니까?
여기 문제는 '쇼'라고 생각합니다. 그것이 당신의 질의 인 경우'(==)'를 호출하지 마십시오. 또한 Hugs는 기본적으로 죽었습니다 (2006 iirc 이후). 그래서 아마도 GHC를 더 잘 사용할 것입니다. –
'(N x) == Null '인 경우도 잊어 버렸습니다. –
답장을 보내 주셔서 감사합니다. 하지만 ghci에서 여전히 스택 오버 플로우가 발생합니다. –