data Set a = Set [a]
member xs x = elem x xs
subset xs ys = and (map (member ys) xs)
instance (Eq a) => Eq (Set a) where
(Set xs) == (Set ys) = (subset xs ys) && (subset ys xs)
class Ord a => Comparable a where
cmp :: a -> a -> String
cmp x y
| x == y = "eq"
| otherwise = "neq"
instance Comparable a => Comparable (Set a) where
cmp (Set xs) (Set ys)
| (Set xs) == (Set ys) = "same"
| otherwise = "different"
Я получаю следующее сообщение об ошибке:Haskell - Compile Error
Не удалось вывести (Ord (Установить)) вытекающий из суперклассов в объявлении экземпляра из контекста (Сопоставимые а) связанный декларацией экземпляра для «Comparable (Set a)»
Хотелось бы узнать, что это за ошибка? Спасибо.
В этом случае вы также можете просто удалить ограничение 'Ord' в свой класс' Comparable'. –
@ChrisEmerson Правда, но я не был уверен в том, что нужно OP, поэтому я покинул класс, когда он был опубликован. – chi