Монада (программирование): различия между версиями

[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
орфография
Строка 3:
 
== Описание ==
Монады чаще всего используются в функциональных языках программирования. При [[Ленивые вычисления|ленивой модели вычисления]] порядок редукции неизвестен. Например, вычисление <code>1 + 3 + 6</code> может быть редуцировано в <code>1 + 9</code> или <code>4 + 6</code>. Монады позволяют упорядочить редукцию. Поэтому существует ироничное утверждение, что Монады - это способ перегрузить оператор "точка с запятой".
 
Монада является контейнером, который хранит в себе значение произвольного типа. Она должна обладать функцией связывания (bind), которая принимает два аргумента: текущее значение монады и функцию, принимающую значение типа, который содержит текущая монада и возвращающая новую монаду. Результатом вызова функции связывания будет новая монада, полученная путём применением первого аргумента ко второму. Так могла бы выглядеть монада в императивном языке Java и одна из её реализаций, контейнер Maybe: