В некотором смысле это шаг назад по сравнению с моим предыдущим вопросом, но... Может кто-нибудь напомнить мне, почему это не работает?
class Container c e where empty :: c insert :: e -> c -> c instance Container [x] x where empty = [] insert = (:) instance Container ByteString Word8 where empty = BIN.empty insert = BIN.cons instance Ord x => Container (Set x) x where empty = SET.empty insert = SET.insert
Очевидно, если бы это было так просто, никто бы не стал изобретать функциональные зависимости и ассоциированные типы. Так в чем же проблема?