Spec-Zone.ru › Haskell 7

Control.Monad.Trans.Except

Copyright (C) 2013 Ross Paterson
License BSD-style (see the file LICENSE)
Maintainer ross@soi.city.ac.uk
Stability experimental
Portability portable
Safe Haskell Safe
Language Haskell98

Содержание

  • Монад Except
  • Трансформатор монады ExceptT
  • Операции с исключениями
  • Поднятие других операций

Описание

Этот трансформатор монады расширяет монад возможностью выброса исключений.

Последовательность действий завершается нормально, производя значение, только если ни одно из действий в последовательности не выбросило исключение. Если одно выбросило исключение, остальная часть последовательности пропускается, и составное действие завершается с этим исключением.

Если значение исключения не требуется, вместо этого можно использовать вариант в Control.Monad.Trans.Maybe.

Монад Except

type Except e = ExceptT e Identity Source

Параметризуемый монад исключений.

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

Функция return возвращает нормальное значение, в то время как >>= завершается при первом исключении. Для варианта, который продолжается после ошибки и собирает все ошибки, см. Errors.

except :: Either e a -> Except e a Source

Конструктор для вычислений в монаде исключений. (Обратное runExcept).

runExcept :: Except e a -> Either e a Source

Извлекатель для вычислений в монаде исключений. (Обратное except).

mapExcept :: (Either e a -> Either e' b) -> Except e a -> Except e' b Source

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

  • runExcept (mapExcept f m) = f (runExcept m)

withExcept :: (e -> e') -> Except e a -> Except e' a Source

Преобразовать любые исключения, выброшенные вычислением, используя заданную функцию (специализация withExceptT).

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

newtype ExceptT e m a Source

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

ExceptT конструирует монад, параметризованный двумя вещами:

  • e - Тип исключения.
  • m - Внутренний монад.

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

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

ExceptT (m (Either e a))

Экземпляры

MonadTrans (ExceptT e)
Monad m => Monad (ExceptT e m)
Functor m => Functor (ExceptT e m)
MonadFix m => MonadFix (ExceptT e m)
(Functor m, Monad m) => Applicative (ExceptT e m)
Foldable f => Foldable (ExceptT e f)
Traversable f => Traversable (ExceptT e f)
(Functor m, Monad m, Monoid e) => Alternative (ExceptT e m)
(Monad m, Monoid e) => MonadPlus (ExceptT e m)
MonadIO m => MonadIO (ExceptT e m)
(Show e, Show1 m) => Show1 (ExceptT e m)
(Read e, Read1 m) => Read1 (ExceptT e m)
(Ord e, Ord1 m) => Ord1 (ExceptT e m)
(Eq e, Eq1 m) => Eq1 (ExceptT e m)
(Eq e, Eq1 m, Eq a) => Eq (ExceptT e m a)
(Ord e, Ord1 m, Ord a) => Ord (ExceptT e m a)
(Read e, Read1 m, Read a) => Read (ExceptT e m a)
(Show e, Show1 m, Show a) => Show (ExceptT e m a)

runExceptT :: ExceptT e m a -> m (Either e a) Source

Обратное ExceptT.

mapExceptT :: (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b Source

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

  • runExceptT (mapExceptT f m) = f (runExceptT m)

withExceptT :: Functor m => (e -> e') -> ExceptT e m a -> ExceptT e' m a Source

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

Операции с исключениями

throwE :: Monad m => e -> ExceptT e m a Source

Сгенерировать значение исключения e.

  • runExceptT (throwE e) = return (Left e)
  • throwE e >>= m = throwE e

catchE Source

Аргументы

:: Monad m
=> ExceptT e m a

внутреннее вычисление

-> (e -> ExceptT e' m a)

обработчик исключений во внутреннем вычислении

-> ExceptT e' m a

Обработка исключения.

  • catchE h (lift m) = lift m
  • catchE h (throwE e) = h e

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

liftCallCC :: CallCC m (Either e a) (Either e b) -> CallCC (ExceptT e m) a b Source

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

liftListen :: Monad m => Listen w m (Either e a) -> Listen w (ExceptT e m) a Source

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

liftPass :: Monad m => Pass w m (Either e a) -> Pass w (ExceptT e m) a Source

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

© 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-Except.html

Spec-Zone.ru

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