Монада (программирование)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Монада в программировании — это абстракция линейной цепочки связанных вычислений. Монады повсеместно применяются в языке Хаскелл. Она описывается полиморфным контейнерным типом с одним параметром, стратегией «поднятия» значения в монаду и стратегией связывания двух вычислений, второе из которых зависит от параметра, вычисляемого первым:

m :: * -> *
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b

В языке Хаскелл к этим операциям добавляется также

fail :: String -> m a

Эта операция не имеет отношения к теоретической сущности монад, однако используется в случае ошибки сопоставления с образцом внутри монадического кода.

В частности, к монадам относятся:

  • IO (монада строго последовательных вычислений): стратегия связывания — «сначала первое вычисление, затем второе»
  • Maybe (монада вычислений с отсутствующими значениями): стратегия связывания — «если первое вычисление дало результат, то второе; иначе — отсутствие результата»
  • List (монада вычислений с несколькими результатами): стратегия связывания — «все возможные результаты второго вычисления, применененного к каждому из вычисленных первым значений параметра»
  • State (монада вычислений с переменной состояния): стратегия связывания — «начать второе вычисление с состоянием, измененным в результате первого»
  • И некоторые другие.

Монады также применяются для синтаксического анализа, продолжений (continuations), вероятностных вычислений и в других случаях.

Концепция монад в программировании была унаследована из теории категорий: Монада (математика)

Содержание

См. также

Ссылки

Туториалы

Другие статьи

en:Monad (functional programming) fi:Monadi (funktionaalinen ohjelmointi) fr:Monade (informatique) it:Monade (informatica) ja:モナド (プログラミング) uk:Монади (програмування) zh:单子

Личные инструменты

Served in 0.045 secs.