Comments 19
Это же монады!
Ну так и что? Суть монад вполне можно объяснить «в пяти словах или меньше»…
«моноид в категории эндофункторов»? ну да, 4 слова…
а если по-человечески?
а если по-человечески?
Нет, лучше так: «Абстракция последовательной связки вычислений.»
По каким-то историческим причинам, понятие «монада» покрылось некой сакральной тайной. А как правильно выразился один разработчик, «монаду можно воспринимать как особый паттерн проектирования». Ничего сакрального в нём нет.
Понятно, что монада — это не так страшно, как ее малюют.
Недавно в учебнике прочитал пример: пример монады в других языках — объект jquery. И в принципе это верно, но много ли frontend разработчиков знают, как оно там внутри устроено? Сомневаюсь.
Тем более, что, объясняя, что такое монада, нужно не только объяснить «что это», но и «как это устроено» и «зачем/как/когда это использовать».
Я например начал использовать монады довольно просто. Но до сих пор не осознал до конца ее сакрального смысла. Не проникся так сказать.
Недавно в учебнике прочитал пример: пример монады в других языках — объект jquery. И в принципе это верно, но много ли frontend разработчиков знают, как оно там внутри устроено? Сомневаюсь.
Тем более, что, объясняя, что такое монада, нужно не только объяснить «что это», но и «как это устроено» и «зачем/как/когда это использовать».
Я например начал использовать монады довольно просто. Но до сих пор не осознал до конца ее сакрального смысла. Не проникся так сказать.
Тем более, что, объясняя, что такое монада, нужно не только объяснить «что это», но и «как это устроено» и «зачем/как/когда это использовать».
Что это и когда использовать — да. Но как устроено… Я не вижу необходимости в знании внутреннего устройства монады. Да, если монада рассматривается как объект исследования — тогда конечно. Если же она рассматривается как инструмент для практического применения — в этом случае вовсе не обязательно знать, что там у неё под капотом.
times :: Monad m => Int -> m () -> m ()
times r a = mapM_ (\_ -> a) [1..r]
Можно через sequence_
times r = sequence_ . replicate r
Статья супер, спасибо!
Большое спасибо за статью! Весьма доходчиво.
Монада — моноид в категории эндофункторов.
Это особенность чистого кода. Мы действительно не можем контролировать порядок, в котором выполняются чистые (математические) функции, ведь конечный результат их работы от этого порядка никак не зависит.
Речь идет о тестировании многопоточного приложения и том, что порядок, в котором выполняются операции в различных потоках, не фиксирован.
Sign up to leave a comment.
Haskell. Тестируем многопоточное приложение