Spec-Zone.ru › Haskell 7

Control.Applicative.Lift

Авторские права (c) Ross Paterson 2010
Лицензия BSD-style (см. файл LICENSE)
Поддержка ross@soi.city.ac.uk
Устойчивость экспериментальная
Переносимость переносимая
Safe Haskell Безопасный
Язык Haskell98

Содержание

  • Поднятие аппликативного выражения
  • Сбор ошибок

Описание

Добавление нового типа чистого вычисления к аппликативному функтору.

Поднятие аппликативного выражения

data Lift f a Исходный код

Аппликативный функтор, образованный добавлением чистых вычислений к заданному аппликативному функтору.

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

Pure a
Other (f a)

Примеры реализации

Functor f => Functor (Lift f)
Applicative f => Applicative (Lift f)

Сочетание Pure только если обе части являются таковыми.

Foldable f => Foldable (Lift f)
Traversable f => Traversable (Lift f)
Alternative f => Alternative (Lift f)

Сочетание Pure только если хотя бы одна часть является таковой.

Show1 f => Show1 (Lift f)

unLift :: Applicative f => Lift f a -> f a Исходный код

Проекция на другой функтор.

mapLift :: (f a -> g a) -> Lift f a -> Lift g a Исходный код

Применение преобразования к другому вычислению.

Сбор ошибок

type Errors e = Lift (Constant e) Исходный код

Аппликативный функтор, собирающий моноид (например, списки) ошибок. Последовательность вычислений завершается неудачей, если хотя бы одно из ее составляющих завершается неудачей, но в отличие от монады, созданной с помощью ExceptT из Control.Monad.Trans.Except, эти вычисления продолжаются после ошибки, собирая все ошибки.

  • pure f <*> pure x = pure (f x)

runErrors :: Errors e a -> Either e a Исходный код

Извлечение вычислений с накоплением ошибок.

  • runErrors (pure x) = Right x

failure :: Monoid e => e -> Errors e a Исходный код

Сообщить об ошибке.

© 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-Applicative-Lift.html

Spec-Zone.ru

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