Control.Monad.ST.Safe
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддерживающий | libraries@haskell.org |
| Стабильность | экспериментальная |
| Переносимость | непереносимая (требует универсального квантора для runST) |
| Safe Haskell | Надёжный |
| Язык | Haskell2010 |
Содержание
Описание
Устаревший: Safe теперь является стандартным, пожалуйста, используйте Control.Monad.ST вместо этого
Эта библиотека предоставляет поддержку строгих потоков состояния, как описано в статье John Launchbury и Simon Peyton Jones «Lazy Functional State Threads» в PLDI '94.
Только API Safe.
Моноид ST
Строгий моноид преобразования состояния. Вычисление типа ST s a преобразует внутреннее состояние, индексированное s, и возвращает значение типа a. Параметр s является либо
Он служит для поддержания отдельных внутренних состояний различных вызовов runST друг от друга и от вызовов stToIO.
Операции >>= и >> строгие относительно состояния (хотя и не относительно значений, хранящихся в состоянии). Например,
runST (writeSTRef _|_ v >>= f) = _|_
runST :: (forall s. ST s a) -> a Источник
Возвращает значение, вычисленное вычислением преобразования состояния. forall гарантирует, что внутреннее состояние, используемое вычислением ST, недоступно для остальной части программы.
fixST :: (a -> ST s a) -> ST s a Источник
Разрешить использовать результат вычисления преобразования состояния (лениво) внутри вычисления. Обратите внимание, что если f строгое, то fixST f = _|_.
Преобразование 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-Safe.html