我是Haskell的初学者。我需要定义eq和neq。
data Nat = Z | S Nat
deriving (Show)
toInt :: Nat -> Int
toInt Z = 0
toInt (S n) = 1 + toInt n
toNat :: Int -> Nat
toNat n | n < 0 = error "Nats do not support negative numbers!"
toNat 0 = Z
toNat n = S (toNat (n-1))
instance Eq Nat where
(==) = eq
(/=) = neq
没有意思发布实例。正确的代码如下:
eq :: Nat -> Nat -> Bool
eq a b =
答案 0 :(得分:5)
没有必要明确定义/=
,因为它的默认定义非常好。也不需要特殊的eq
功能 - 您可以直接定义==
。这是一个模板(带有提示!)开始。
instance Eq Nat where
Z == Z = ?
S m == S n = ???
_ == _ = ?