Spec-Zone.ru › Haskell 8

Control.Monad.ST.Lazy.Safe

Copyright (c) The University of Glasgow 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability non-portable (requires universal quantification for runST)
Safe Haskell Trustworthy
Language Haskell2010

Содержание

  • Монад ST
  • Преобразование между строгими и ленивыми ST
  • Преобразование ST в IO

Описание

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

Этот модуль представляет идентичный интерфейс к Control.Monad.ST, за исключением того, что монад откладывает вычисление операций ST до тех пор, пока не потребуется значение, зависящее от них.

Только безопасный API.

Монад ST

data ST s a Source

Ленивый ST monad. The ST monad allows for destructive updates, but is escapable (unlike IO). A computation of type ST s a returns a value of type a, and execute in "thread" s. The s@ параметр является либо

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

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

Операции >>= и >> не являются строгими в состоянии. Например,

runST (writeSTRef _|_ v >>= readSTRef _|_ >> return 2) = 2
Экземпляры
Подробности о экземплярах
Monad (ST s)

Since: base-2.1

Подробности о экземпляре

Определено в Control.Monad.ST.Lazy.Imp

Методы

(>>=) :: ST s a -> (a -> ST s b) -> ST s b Source

(>>) :: ST s a -> ST s b -> ST s b Source

return :: a -> ST s a Source

Functor (ST s)

Since: base-2.1

Подробности о экземпляре

Определено в Control.Monad.ST.Lazy.Imp

Методы

fmap :: (a -> b) -> ST s a -> ST s b Source

(<$) :: a -> ST s b -> ST s a Source

MonadFix (ST s)

Since: base-2.1

Подробности о экземпляре

Определено в Control.Monad.ST.Lazy.Imp

Методы

mfix :: (a -> ST s a) -> ST s a Source

MonadFail (ST s)

Since: base-4.10

Подробности о экземпляре

Определено в Control.Monad.ST.Lazy.Imp

Методы

fail :: String -> ST s a Source

Applicative (ST s)

Since: base-2.1

Подробности о экземпляре

Определено в Control.Monad.ST.Lazy.Imp

Методы

pure :: a -> ST s a Source

(<*>) :: ST s (a -> b) -> ST s a -> ST s b Source

liftA2 :: (a -> b -> c) -> ST s a -> ST s b -> ST s c Source

(*>) :: ST s a -> ST s b -> ST s b Source

(<*) :: ST s a -> ST s b -> ST s a Source

runST :: (forall s. ST s a) -> a Source

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

fixST :: (a -> ST s a) -> ST s a Source

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

Преобразование между строгими и ленивыми ST

strictToLazyST :: ST s a -> ST s a Source

Преобразование строгой ST вычисления в ленивое. Строгий поток состояния, переданный в strictToLazyST, не выполняется до тех пор, пока не будет потребован результат ленивого потока состояния, который он возвращает.

lazyToStrictST :: ST s a -> ST s a Source

Преобразование ленивого ST вычисления в строгое.

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

data RealWorld Source

RealWorld обладает глубокой магией. Оно является примитивным, но не неподнятым (отсюда ptrArg). Мы никогда не манипулируем значениями типа RealWorld; оно используется только в системе типов для параметризации State#.

stToIO :: ST RealWorld a -> IO a Source

Трансформатор монады, встраивающий ленивое ST в монаду 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/8.10.2/docs/html/libraries/base-4.14.1.0/Control-Monad-ST-Lazy-Safe.html

Spec-Zone.ru

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