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