このデータ型があり、等値演算子を定義したいと考えています。Mlist は Eq のインスタンスでなければなりません。
data Mlist a = Mlist [a]
instance Eq a => Eq (Mlist a) where
(==) :: [a] -> [a] -> Bool
等値演算子を使用すると、これを確認できます (さらに、順序は重要ではありません)。
m1 = Mlist [1,2,3]
m2 = Mlist [3,1,2]
-- then m1 equals m2
m3 = Mlist [3,2,1,5]
-- then m1 not equals m3
トップコードが機能していません。誰か助けてもらえますか?
編集:これは新しいバージョンですが、機能していません...
instance Eq a => Eq (Mlist a) where
(==) :: (Eq a) => [a] -> [a] -> Bool
(==) [] [] = True
(==) [] _ = False
(==) _ [] = False
(==) (hd:tl) b = (==) tl $ delete hd b