Spec-Zone.ru › Haskell 7

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
  • Операции Reader
  • Поднятие других операций

Описание

Объявление трансформатора монады ReaderT, который добавляет статическую среду к данной монаде.

Если вычисление должно изменить хранимую информацию, используйте Control.Monad.Trans.State вместо этого.

Монадный читатель

type Reader r = ReaderT r Identity Источник

Параметризуемая монада читатель.

Вычисления — это функции от общей среды.

Функция return игнорирует среду, в то время как >>= передает унаследованную среду обеим подвычислениям.

reader :: Monad m => (r -> a) -> ReaderT r m a Источник

Конструктор для вычислений в монаде читатель (эквивалентен asks).

runReader Источник

Аргументы

:: Reader r a

Вычисление для запуска.

-> r

Начальная среда.

-> a

Запускает вычисление Reader и извлекает конечное значение из него. (Обратная функция reader.)

mapReader :: (a -> b) -> Reader r a -> Reader r b Источник

Преобразование значения, возвращаемого вычислением Reader.

  • runReader (mapReader f m) = f . runReader m

withReader Источник

Аргументы

:: (r' -> r)

Функция для изменения среды.

-> Reader r a

Вычисление для выполнения в изменённой среде.

-> Reader r' a

Выполнение вычисления в изменённой среде (специализация withReaderT).

  • runReader (withReader f m) = runReader m . f

Трансформатор монады ReaderT

newtype ReaderT r m a Источник

Трансформатор монады читатель, добавляющий доступную для чтения среду к заданной монаде.

Функция return игнорирует среду, а функция >>= передает унаследованную среду обеим подвычислениям.

Конструкторы

ReaderT

Поля

runReaderT :: r -> m a

Примеры использования

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 (mapReaderT f m) = f . runReaderT m

withReaderT Источник

Аргументы

:: (r' -> r)

Функция для изменения среды.

-> ReaderT r m a

Вычисление для выполнения в изменённой среде.

-> ReaderT r' m a

Выполнение вычисления в изменённой среде (более общий вариант local).

  • runReaderT (withReaderT f m) = runReaderT m . f

Операции Reader

ask :: Monad m => ReaderT r m r Источник

Получение значения из среды.

local Источник

Аргументы

:: Monad m
=> (r -> r)

Функция для изменения среды.

-> ReaderT r m a

Вычисление для выполнения в изменённой среде.

-> ReaderT r m a

Выполнение вычисления в изменённой среде (специализация withReaderT).

  • runReaderT (local f m) = runReaderT m . f

asks Источник

Аргументы

:: Monad m
=> (r -> a)

Функция-селектор для применения к среде.

-> ReaderT r m a

Получение функции от текущей среды.

  • asks f = liftM f ask

Поднятие других операций

liftCallCC :: CallCC m a b -> CallCC (ReaderT r m) a b Источник

Поднять операцию callCC в новую монаду.

liftCatch :: Catch e m a -> Catch e (ReaderT r m) a Source

Поднять операцию catchE в новый монаду.

© 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

Spec-Zone.ru

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