GHC.ST
| Авторские права | (c) The University of Glasgow 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 |
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.14.1/docs/libraries/base-4.22.0.0-66f8/GHC-ST.html