Я читал о монадах в теории категорий. Одно определение монад использует пару сопряженных функторов. Монада определяется обходом с использованием этих функторов. Очевидно, что дополнения очень важны в теории категорий, но я не видел никакого объяснения монад Haskell в терминах присоединенных функторов. Кто-нибудь задумывался об этом?