Spec-Zone.ru › Haskell 9

Control.Monad.ST.Lazy

Copyright (c) The University of Glasgow 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability non-portable (requires universal quantification for runST)
Safe Haskell Safe
Language Haskell2010

Содержание

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

Описание

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

Монад ST

data ST s a Source

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

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

Он служит для того, чтобы внутренние состояния различных вызовов runST были отделены друг от друга и от вызовов stToIO.

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

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

Since: base-2.1

Подробности о экземпляре

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

Методы

pure :: a -> ST s a Source

(<*>) :: ST s (a -> b) -> ST s a -> ST s b Source

liftA2 :: (a -> b -> c) -> ST s a -> ST s b -> ST s c Source

(*>) :: ST s a -> ST s b -> ST s b Source

(<*) :: ST s a -> ST s b -> ST s a Source

Functor (ST s) Source

Since: base-2.1

Подробности о экземпляре

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

Методы

fmap :: (a -> b) -> ST s a -> ST s b Source

(<$) :: a -> ST s b -> ST s a Source

Monad (ST s) Source

Since: base-2.1

Подробности о экземпляре

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

Методы

(>>=) :: ST s a -> (a -> ST s b) -> ST s b Source

(>>) :: ST s a -> ST s b -> ST s b Source

return :: a -> ST s a Source

MonadFix (ST s) Source

Since: base-2.1

Подробности о экземпляре

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

Методы

mfix :: (a -> ST s a) -> ST s a Source

runST :: (forall s. ST s a) -> a Source

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

fixST :: (a -> ST s a) -> ST s a Source

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

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

strictToLazyST :: ST s a -> ST s a Source

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

lazyToStrictST :: ST s a -> ST s a Source

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

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

data RealWorld Source

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

stToIO :: ST RealWorld a -> IO a Source

Трансформатор монады, встраивающий ленивое 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.12.1/docs/libraries/base-4.21.0.0-8e62/Control-Monad-ST-Lazy.html

Spec-Zone.ru

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