在Haskell中定义了eq和neq

ntb*_*457 0 haskell

我是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
Run Code Online (Sandbox Code Playgroud)

不是故意发布实例.正确的代码如下:

eq :: Nat -> Nat -> Bool
eq a b =
Run Code Online (Sandbox Code Playgroud)

dfe*_*uer 5

没有必要/=明确定义,因为它的默认定义非常好.还没有真正需要特殊eq功能 - 您可以==直接定义.这是一个模板(带有提示!)开始.

instance Eq Nat where
  Z == Z = ?
  S m == S n = ???
  _ == _ = ?
Run Code Online (Sandbox Code Playgroud)