Haskellで数値表現用のカスタムデータ型を作成しましたが、今度はEqインスタンスを実装したいと思っています。だから私はすでに行われていますHaskellでカスタムデータ型のEqのインスタンスを作成する
instance (Eq Sign) => Eq (Numeral) where
(==) Num(x,_)== Num(y,_) = x==y
しかし、私はこのエラーを取得する:
data Digit = Zero | One | Two
type Digits = [Digit]
data Sign = Pos | Neg -- Pos fuer Positive, Neg fuer Negative
newtype Numeral = Num (Sign,Digits)
instance Eq Sign where
(==) Pos Pos = True
(==) Neg Neg = True
(==) _ _ = False
instance Eq Digit where
(==) Zero Zero = True
(==) One One = True
(==) Two Two = True
(==) _ _ = False
は、今私は私のカスタムタイプ数字でログインをチェックアウトしたいので、私はこれを試したパターンで解析エラー:( ==)
いずれか '(==)(NUM(X、_))(NUM(Y、_))= X == y'または'民(X、_)==民(y、_)= x == y'である。 – jpath
またなぜ 'Numt'に' newtype'を使用しますか?なぜ、 'data Numeral = Num Sign Digits'? – jpath
最初に入力したケースを入力すると、あいまいなオカレンス '==' が表示されますが、それ以前に複数回宣言されています(前のケースでは推測しています)、2番目のケースもうまく機能しない –