Как вы пишете правила перезаписи для методов typeclass?
Обратите внимание на следующий класс:
class ListIsomorphic l where
toList :: l a -> [a]
fromList :: [a] -> l a
Я также требую, чтобы toList . fromList == id. Как написать правила перезаписи, чтобы сообщить GHC сделать эту замену?
Ответ 1
Вы можете использовать RULES прагму для реализации этого упрощения, но вам нужно сделать немного дополнительной работы, чтобы убедиться, что правила переписывания общих правил не огонь перед вашим имеет шанс: