Ответ 1
Я получаю удовольствие от перегрузки id и (.)?
Ну, вы также должны (должны) получить связанные с ними законы:
"identity/left" forall p .
id . p = p
"identity/right" forall p .
p . id = p
"association" forall p q r .
(p . q) . r = p . (q . r)
В качестве побочного примечания:
Причина, по которой вы не получаете, что многие забавные функции, такие как mapM
или foldMap
, заключаются в том, что говоря, что что-то есть категория, на самом деле очень мало говорит об этом. Наиболее полезными функциями я считаю те, которые определены в Control.Category
, которые иногда упрощают чтение кода: >>>
и <<<