Spec-Zone.ru › Haskell 7

Control.Monad.Fix

Авторские права (c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2002
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддерживающий libraries@haskell.org
Стабильность экспериментальная
Переносимость переносимая
Безопасный Haskell Надёжный
Язык Haskell2010

Описание

Монадные неподвижные точки.

Для подробного обсуждения см. диссертацию Левента Эркока, Value Recursion in Monadic Computations, Oregon Graduate Institute, 2002.

class Monad m => MonadFix m where Источник

Монады, имеющие неподвижные точки с семантикой «завязывания узлов». Экземпляры MonadFix должны удовлетворять следующим законам:

Чистота
mfix (return . h) = return (fix h)
Сжатие слева (или усиление)
mfix (\x -> a >>= \y -> f x y) = a >>= \y -> mfix (\x -> f x y)
Сдвиг
mfix (liftM h . f) = liftM h (mfix (f . h)), для строгих h.
Вложение
mfix (\x -> mfix (\y -> f x y)) = mfix (\x -> f x x)

Этот класс используется при переводе рекурсивной do нотации, поддерживаемой GHC и Hugs.

Методы

mfix :: (a -> m a) -> m a Источник

Неподвижная точка монадного вычисления. mfix f выполняет действие f только один раз, и конечный результат используется в качестве входных данных. Следовательно, f не должна быть строгой, иначе mfix f будет расходиться.

Экземпляры

MonadFix []
MonadFix IO
MonadFix Maybe
MonadFix Identity
MonadFix ((->) r)
MonadFix (Either e)
MonadFix (ST s)
MonadFix (ST s)

fix :: (a -> a) -> a Источник

fix f является наименьшей неподвижной точкой функции f, т.е. наименее определённой x такой, что f x = x.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Control-Monad-Fix.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API