free-5.1.10: Monads for free
Copyright (C) 2012 Edward Kmett
License BSD-style (see the file LICENSE)
Maintainer Edward Kmett <ekmett@gmail.com>
Stability provisional
Portability GADTs, Rank2Types
Safe Haskell Safe
Language Haskell2010

Control.Alternative.Free

Description

Left distributive Alternative functors for free, based on a design by Stijn van Drongelen.

Synopsis

Documentation

newtype Alt f a Source #

Constructors

Alt

Fields

Instances

Instances details
Functor ( Alt f) Source #
Instance details

Defined in Control.Alternative.Free

Methods

fmap :: (a -> b) -> Alt f a -> Alt f b Source #

(<$) :: a -> Alt f b -> Alt f a Source #

Applicative ( Alt f) Source #
Instance details

Defined in Control.Alternative.Free

Alternative ( Alt f) Source #
Instance details

Defined in Control.Alternative.Free

Alt ( Alt f) Source #
Instance details

Defined in Control.Alternative.Free

Apply ( Alt f) Source #
Instance details

Defined in Control.Alternative.Free

Methods

(<.>) :: Alt f (a -> b) -> Alt f a -> Alt f b Source #

(.>) :: Alt f a -> Alt f b -> Alt f b Source #

(<.) :: Alt f a -> Alt f b -> Alt f a Source #

liftF2 :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Source #

Semigroup ( Alt f a) Source #
Instance details

Defined in Control.Alternative.Free

Monoid ( Alt f a) Source #
Instance details

Defined in Control.Alternative.Free

data AltF f a where Source #

Constructors

Ap :: f a -> Alt f (a -> b) -> AltF f b infixl 3
Pure :: a -> AltF f a

Instances

Instances details
Functor ( AltF f) Source #
Instance details

Defined in Control.Alternative.Free

Methods

fmap :: (a -> b) -> AltF f a -> AltF f b Source #

(<$) :: a -> AltF f b -> AltF f a Source #

Applicative ( AltF f) Source #
Instance details

Defined in Control.Alternative.Free

runAlt :: forall f g a. Alternative g => ( forall x. f x -> g x) -> Alt f a -> g a Source #

Given a natural transformation from f to g , this gives a canonical monoidal natural transformation from Alt f to g .

liftAlt :: f a -> Alt f a Source #

A version of lift that can be used with any f .

hoistAlt :: ( forall a. f a -> g a) -> Alt f b -> Alt g b Source #

Given a natural transformation from f to g this gives a monoidal natural transformation from Alt f to Alt g .