Spec-Zone.ru › Haskell 9

Control.Monad.ST.Lazy

Авторские права (c) The University of Glasgow 2001
Лицензия в стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность предварительная
Переносимость непереносимый (для runST требуется универсальная квантификация)
Безопасный Haskell Безопасный
Язык Haskell2010

Содержание

  • Монада ST
  • Преобразование между строгим и ленивым ST
  • Преобразование ST в IO

Описание

Этот модуль предоставляет интерфейс, идентичный интерфейсу Control.Monad.ST, за исключением того, что эта монада откладывает выполнение операций над состоянием до тех пор, пока не потребуется значение, зависящее от них.

Монада ST

data ST s a Источник

Ленивая монада ST. Монада ST допускает деструктивное обновление, но позволяет выйти за её пределы (в отличие от IO). Вычисление типа ST s a возвращает значение типа a и выполняется в «потоке» s. Параметр s — это либо

  • неинстанцированная переменная типа (внутри вызовов runST), либо
  • RealWorld (внутри вызовов stToIO).

Он позволяет отделить внутренние состояния разных вызовов runST друг от друга, а также от состояний вызовов stToIO.

Операции >>= и >> не являются строгими по состоянию. Например:

runST (writeSTRef _|_ v >>= readSTRef _|_ >> return 2) = 2
Экземпляры
Сведения об экземплярах
Applicative (ST s) Источник

С версии: base-2.1

Сведения об экземпляре

Определён в GHC.Internal.Control.Monad.ST.Lazy.Imp

Методы

pure :: a -> ST s a Источник

(<*>) :: ST s (a -> b) -> ST s a -> ST s b Источник

liftA2 :: (a -> b -> c) -> ST s a -> ST s b -> ST s c Источник

(*>) :: ST s a -> ST s b -> ST s b Источник

(<*) :: ST s a -> ST s b -> ST s a Источник

Functor (ST s) Источник

С версии: base-2.1

Сведения об экземпляре

Определён в GHC.Internal.Control.Monad.ST.Lazy.Imp

Методы

fmap :: (a -> b) -> ST s a -> ST s b Источник

(<$) :: a -> ST s b -> ST s a Источник

Monad (ST s) Источник

С версии: base-2.1

Сведения об экземпляре

Определён в GHC.Internal.Control.Monad.ST.Lazy.Imp

Методы

(>>=) :: ST s a -> (a -> ST s b) -> ST s b Источник

(>>) :: ST s a -> ST s b -> ST s b Источник

return :: a -> ST s a Источник

MonadFix (ST s) Источник

С версии: base-2.1

Сведения об экземпляре

Определён в GHC.Internal.Control.Monad.ST.Lazy.Imp

Методы

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

runST :: (forall s. ST s a) -> a Источник

Возвращает значение, вычисленное в вычислении ST. forall гарантирует, что внутреннее состояние, используемое вычислением ST, недоступно остальной части программы.

fixST :: (a -> ST s a) -> ST s a Источник

Позволяет использовать результат вычисления ST (лениво) внутри самого вычисления. Обратите внимание: если f является строгим, то fixST f = _|_.

Преобразование между строгим и ленивым ST

strictToLazyST :: ST s a -> ST s a Источник

Преобразует строгое вычисление ST в ленивое. Строгий поток состояния, переданный в strictToLazyST, не выполняется, пока не потребуется результат возвращаемого им ленивого потока состояния.

lazyToStrictST :: ST s a -> ST s a Источник

Преобразует ленивое вычисление ST в строгое.

Преобразование ST в IO

data RealWorld Источник

RealWorld обладает глубоко магической природой. Он примитивный, но не является неподнимаемым (отсюда ptrArg). Мы никогда не манипулируем значениями типа RealWorld; он используется только в системе типов для параметризации State#.

stToIO :: ST RealWorld a -> IO a Источник

Преобразователь монад, встраивающий ленивый ST в монаду IO. Параметр RealWorld указывает, что внутреннее состояние, используемое вычислением ST, является специальным состоянием, предоставляемым монадой IO, и поэтому отличается от состояний, используемых вызовами runST.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Control-Monad-ST-Lazy.html

Spec-Zone.ru

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