GHC.ST
| Авторские права | (c) Университет Глазго 1992-2002 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддержка | ghc-devs@haskell.org |
| Стабильность | внутренняя |
| Переносимость | непереносимая (расширения GHC) |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
Содержание
Описание
Моноид ST.
Жесткий моноид ST. Моноид ST позволяет выполнять деструктивные обновления, но является ускользающим (в отличие от IO). Вычисление типа ST s a возвращает значение типа a, и выполняется в "потоке" s. Параметр s это либо
Он служит для того, чтобы внутренние состояния разных вызовов runST оставались изолированными друг от друга и от вызовов stToIO.
Операции >>= и >> являются жёсткими относительно состояния (хотя и не относительно значений, хранящихся в состоянии). Например,
runST (writeSTRef _|_ v >>= f) = _|_
Экземпляры
| Applicative (ST s) Источник | С версии: base-4.4.0.0 |
| Functor (ST s) Источник | С версии: base-2.1 |
| Monad (ST s) Источник | С версии: base-2.1 |
| MonadFix (ST s) Источник | С версии: base-2.1 |
Определено в GHC.Internal.Control.Monad.Fix | |
| Monoid a => Monoid (ST s a) Источник | С версии: base-4.11.0.0 |
| Semigroup a => Semigroup (ST s a) Источник | С версии: base-4.11.0.0 |
| Show (ST s a) Источник | С версии: base-2.1 |
Определено в GHC.Internal.ST МетодыshowsPrec :: Целое -> ST s a -> ShowS Исходный код show :: ST s a -> Строка Исходный код showList :: [ST s a] -> ShowS Исходный код |
data STret s a Исходный код
type STRep s a = State# s -> (# State# s, a #) Исходный код
runST :: (forall s. ST s a) -> a Исходный код
Возвращает значение, вычисленное потоком состояния. forall гарантирует, что внутреннее состояние, используемое в ST вычислении, недоступно остальной части программы.
Небезопасные функции
liftST :: ST s a -> State# s -> STret s a Исходный код
unsafeInterleaveST :: ST s a -> ST s a Исходный код
unsafeInterleaveST позволяет отложить ST вычисление лениво. При передаче значения типа ST a, ST вычисление будет выполнено только при запросе значения a.
unsafeDupableInterleaveST :: ST s a -> ST s a Исходный код
unsafeDupableInterleaveST позволяет отложить ST вычисление лениво. При передаче значения типа ST a, ST вычисление будет выполнено только при запросе значения a.
Вычисление может быть выполнено несколько раз различными потоками, возможно, одновременно. Для предотвращения этого используйте unsafeInterleaveST вместо этого.
С версии: base-4.11
© 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/GHC-ST.html