Про монады
Nov. 13th, 2009 02:10 pmВсякий знает, что монады в Хаскелле вводят как класс типов с парой функций
zelych в комментариях говорит, что здесь следует упомянуть, что "монада в категориях -- это функтор + мю + эта". Следует, упоминаю.) Мы видим, что в этих двух определениях return один и тот же, а вот биндер (>>=) и join - разные. Поскольку на фундаментальном уровне оба эти подхода описывают одно и то же, биндер (>>=) и join должны выражаться друг через друга. Попробуем сделать это, руководствуясь исключительно типами.
( Read more... )
return :: a -> m a (>>=) :: m a -> (a -> m b) -> m bНекоторые также знают, что в теории категорий монады вводятся несколько по-другому. Если прямо переписать категорийное определение на Хаскелле (см. также замечание в конце текста), получим
return :: a -> m a join :: m (m a) -> m a(Ну, на самом деле, return в ТК принято звать η (эта), а join - μ (мю). UPD: А
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
( Read more... )