Control.Monad.ST.Lazy.Safe
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддерживающий | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | непереносимая (требуется универсальное квантификация для runST) |
| Safe Haskell | Достоверный |
| Язык | Haskell2010 |
Описание
Устаревшее: Safe — теперь значение по умолчанию, пожалуйста, используйте Control.Monad.ST.Lazy вместо него
Этот модуль представляет идентичный интерфейс Control.Monad.ST, за исключением того, что монада откладывает оценку операций состояния до тех пор, пока не потребуется значение, зависящее от них.
Только безопасный API.
Монад ST
Ленивая монада преобразователя состояния. Вычисление типа ST s a преобразует внутреннее состояние, индексированное s, и возвращает значение типа a. Параметр s — это либо
Он служит для того, чтобы сохранить внутренние состояния разных вызовов runST независимо друг от друга и от вызовов stToIO.
Операции >>= и >> не являются строгими по отношению к состоянию. Например,
runST (writeSTRef _|_ v >>= readSTRef _|_ >> return 2) = 2
runST :: (forall s. ST s a) -> a Источник
Возвращает значение, вычисленное вычислением преобразователя состояния. forall гарантирует, что внутреннее состояние, используемое вычислением ST, недоступно для остальной части программы.
fixST :: (a -> ST s a) -> ST s a Источник
Разрешает использование результата вычисления преобразователя состояния (лениво) внутри вычисления. Обратите внимание, что если f строго, fixST f = _|_.
Преобразование между строгими и ленивыми ST
strictToLazyST :: ST s a -> ST s a Источник
Преобразование строгих вычислений ST в ленивые. Строгая нить состояния, переданная strictToLazyST, не выполняется, пока не потребован результат возвращаемой ленивой нити состояния.
lazyToStrictST :: ST s a -> ST s a Источник
Преобразование ленивых вычислений ST в строгие.
Преобразование ST в IO
RealWorld глубоко магическое. Оно является *примитивным*, но не *неподнятым* (поэтому ptrArg). Мы никогда не манипулируем значениями типа RealWorld; оно используется только в системе типов для параметризации State#.
stToIO :: ST RealWorld a -> IO a Источник
Монада-трансформатор, встраивающий ленивые преобразователи состояния в монаду 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/7.10.3/docs/html/libraries/base-4.8.2.0/Control-Monad-ST-Lazy-Safe.html