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