Скажите, пожалуйста, существует ли способ задания аксиом в Haskell. Хотелось бы получить
алгебраический инструментарий именно в Haskell в силу его четкой математической семантики.
Прибегать к функциональным proof-assistant'ам (Isabelle, Coq) не хотелось бы (блажь?).
Хотелось бы иметь что-то вида (например, для моноида с левой единицей) c автоматической
проверкой для типов (instance'ов):
class Monoid a where
mult :: a -> a -> a
lId :: a
axioms = [(\x -> identity `mult` x == x)]