free-5.1.10: Monads for free
Copyright(C) 2012 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
PortabilityGADTs, Rank2Types
Safe HaskellSafe
LanguageHaskell2010

Control.Alternative.Free.Final

Description

Final encoding of free Alternative functors.

Synopsis
  • newtype Alt f a = Alt {
    • _runAlt :: forall g. Alternative g => (forall x. f x -> g x) -> g a
    }
  • runAlt :: forall f g a. Alternative g => (forall x. f x -> g x) -> Alt f a -> g a
  • liftAlt :: f a -> Alt f a
  • hoistAlt :: (forall a. f a -> g a) -> Alt f b -> Alt g b

Documentation

newtype Alt f a Source #

The free Alternative for any f.

Constructors

Alt 

Fields

  • _runAlt :: forall g. Alternative g => (forall x. f x -> g x) -> g a
     

Instances

Instances details
Alternative (Alt f) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

empty :: Alt f a

(<|>) :: Alt f a -> Alt f a -> Alt f a

some :: Alt f a -> Alt f [a]

many :: Alt f a -> Alt f [a]

Applicative (Alt f) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

pure :: a -> Alt f a

(<*>) :: Alt f (a -> b) -> Alt f a -> Alt f b

liftA2 :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c

(*>) :: Alt f a -> Alt f b -> Alt f b

(<*) :: Alt f a -> Alt f b -> Alt f a

Functor (Alt f) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

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

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

Alt (Alt f) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

(<!>) :: Alt f a -> Alt f a -> Alt f a

some :: Applicative (Alt f) => Alt f a -> Alt f [a]

many :: Applicative (Alt f) => Alt f a -> Alt f [a]

Apply (Alt f) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

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

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

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

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

Monoid (Alt f a) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

mempty :: Alt f a

mappend :: Alt f a -> Alt f a -> Alt f a

mconcat :: [Alt f a] -> Alt f a

Semigroup (Alt f a) Source # 
Instance details

Defined in Control.Alternative.Free.Final

Methods

(<>) :: Alt f a -> Alt f a -> Alt f a

sconcat :: NonEmpty (Alt f a) -> Alt f a

stimes :: Integral b => b -> Alt f a -> Alt f a

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 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.