Control.Monad.Trans.Reader
| Copyright | (c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001 |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | ross@soi.city.ac.uk |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell98 |
Описание
Объявление трансформатора монады ReaderT, который добавляет статическую среду к данной монаде.
Если вычисление должно изменить хранимую информацию, используйте Control.Monad.Trans.State вместо этого.
Монадный читатель
type Reader r = ReaderT r Identity Источник
Параметризуемая монада читатель.
Вычисления — это функции от общей среды.
Функция return игнорирует среду, в то время как >>= передает унаследованную среду обеим подвычислениям.
reader :: Monad m => (r -> a) -> ReaderT r m a Источник
Конструктор для вычислений в монаде читатель (эквивалентен asks).
Аргументы
| :: Reader r a | Вычисление для запуска. |
| -> r | Начальная среда. |
| -> a |
Запускает вычисление Reader и извлекает конечное значение из него. (Обратная функция reader.)
mapReader :: (a -> b) -> Reader r a -> Reader r b Источник
Преобразование значения, возвращаемого вычислением Reader.
Аргументы
| :: (r' -> r) | Функция для изменения среды. |
| -> Reader r a | Вычисление для выполнения в изменённой среде. |
| -> Reader r' a |
Выполнение вычисления в изменённой среде (специализация withReaderT).
runReader(withReaderf m) =runReaderm . f
Трансформатор монады ReaderT
newtype ReaderT r m a Источник
Трансформатор монады читатель, добавляющий доступную для чтения среду к заданной монаде.
Функция return игнорирует среду, а функция >>= передает унаследованную среду обеим подвычислениям.
Конструкторы
| ReaderT | |
Поля
| |
Примеры использования
| MonadTrans (ReaderT r) | |
| Monad m => Monad (ReaderT r m) | |
| Functor m => Functor (ReaderT r m) | |
| MonadFix m => MonadFix (ReaderT r m) | |
| Applicative m => Applicative (ReaderT r m) | |
| Alternative m => Alternative (ReaderT r m) | |
| MonadPlus m => MonadPlus (ReaderT r m) | |
| MonadIO m => MonadIO (ReaderT r m) |
mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b Источник
Преобразование вычисления внутри ReaderT.
runReaderT(mapReaderTf m) = f .runReaderTm
Аргументы
| :: (r' -> r) | Функция для изменения среды. |
| -> ReaderT r m a | Вычисление для выполнения в изменённой среде. |
| -> ReaderT r' m a |
Выполнение вычисления в изменённой среде (более общий вариант local).
runReaderT(withReaderTf m) =runReaderTm . f
Операции Reader
ask :: Monad m => ReaderT r m r Источник
Получение значения из среды.
Аргументы
| :: Monad m | |
| => (r -> r) | Функция для изменения среды. |
| -> ReaderT r m a | Вычисление для выполнения в изменённой среде. |
| -> ReaderT r m a |
Выполнение вычисления в изменённой среде (специализация withReaderT).
runReaderT(localf m) =runReaderTm . f
Получение функции от текущей среды.
Поднятие других операций
liftCallCC :: CallCC m a b -> CallCC (ReaderT r m) a b Источник
Поднять операцию callCC в новую монаду.
© 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/transformers-0.4.2.0/Control-Monad-Trans-Reader.html