Я пытался написать небольшой файл, чтобы опробовать структуру данных, похожую на сумку. Пока мой код выглядит следующим образом:
data Fruit = Apple | Banana | Pear deriving (Eq, Show)
data Bag a = EmptyBag | Contents [(a, Integer)]
emptyBag :: Bag a
emptyBag = EmptyBag
unwrap :: [a] -> a
unwrap [x] = x
isObject theObject (obj, inte) = theObject == obj
count :: Bag a -> a -> Integer
count (Contents [xs]) theObject = snd (unwrap (filter (isObject theObject) [xs]))
count EmptyBag _ = 0
Но когда я пытаюсь запустить его, я получаю сообщение об ошибке
Не удалось вывести (уравнение) из контекста ()
в результате использования isObject в ....
Принимая во внимание, когда я беру функцию подсчета и вызываю
snd (unwrap (filter (isObject Banana) [(Apple, 1), (Banana, 2)]))
оно счастливо возвращается 2.
Любые подсказки о том, почему это так, или советы по написанию такого рода структуры данных будут очень благодарны.