Основы функционального программирования/Haskell/Модули и монады: различия между версиями
Содержимое удалено Содержимое добавлено
→Встроенные монады: орфография |
АРГО-67 (обсуждение | вклад) →Монады: орфография |
||
Строка 79:
== Монады ==
Многие новички в [[w:Функциональное программирование|функциональном
Монады суть типы, представляющие собой экземпляры одного из следующих монадических классов: <code>Functor</code>, <code>Monad</code> и <code>MonadPlus</code>. Ни один из этих классов не может быть предком для другого класса, то есть монадические классы ненаследуемы. В модуле <code>Prelude</code> определены три монады: <code>IO</code>, <code>[]</code> и <code>Maybe</code>, то есть список также является монадой.
Строка 107:
_ -> fail "s")</code>
где <code>s</code> — это строка, которая может определять местоположение оператора <code>do</code> в программе, а может просто нести некоторую семантическую нагрузку. Например, в монаде <code>IO</code> действие <code>('a' -> getChar)</code> вызовет функцию <code>fail</code> в том случае, если считанный символ не является символом <code>'a'</code>. Это действие прерывает исполнение программы, так как определённая в монаде <code>IO</code> функция <code>fail</code> в свою очередь вызывает системную
Класс <code>MonadPlus</code> используется для тех монад, в которых есть нулевой элемент и операция <code>+</code>. Определение этого класса выглядит следующим образом:
|