Spec-Zone.ru › Haskell 7

Control.Monad.ST.Safe

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддерживающий libraries@haskell.org
Стабильность экспериментальная
Переносимость непереносимая (требует универсального квантора для runST)
Safe Haskell Надёжный
Язык Haskell2010

Содержание

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

Описание

Устаревший: Safe теперь является стандартным, пожалуйста, используйте Control.Monad.ST вместо этого

Эта библиотека предоставляет поддержку строгих потоков состояния, как описано в статье John Launchbury и Simon Peyton Jones «Lazy Functional State Threads» в PLDI '94.

Только API Safe.

Моноид ST

data ST s a Источник

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

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

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

Операции >>= и >> строгие относительно состояния (хотя и не относительно значений, хранящихся в состоянии). Например,

runST (writeSTRef _|_ v >>= f) = _|_

Примеры

Моноид (ST s)
Функтор (ST s)
MonadFix (ST s)
Прикладной (ST s)
Показать (ST s a)

runST :: (forall s. ST s a) -> a Источник

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

fixST :: (a -> ST s a) -> ST s a Источник

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

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

data RealWorld :: * Источник

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

Spec-Zone.ru

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