free-functors-0: Provides free functors that are adjoint to functors that forget class constraints.

Portabilitynon-portable
Stabilityexperimental
Maintainersjoerd@w3future.com
Safe HaskellSafe-Infered

Data.Functor.Free

Description

A free functor is left adjoint to a forgetful functor. In this package the forgetful functor forgets class constraints.

Synopsis

Documentation

newtype Free c a Source

The free functor for constraint c.

Constructors

Free 

Fields

runFree :: forall b. c b => (a -> b) -> b
 

Instances

ForallF c (Free c) => Monad (Free c) 
Functor (Free c) 
Applicative (Free c) 
ForallT c (LiftAFree c) => Foldable (Free c) 
ForallT c (LiftAFree c) => Traversable (Free c) 
(ForallF c Identity, ForallF c (Free c), ForallF c (Compose (Free c) (Free c))) => Comonad (Free c) 

leftAdjunct :: (Free c a -> b) -> a -> bSource

rightAdjunct :: c b => (a -> b) -> Free c a -> bSource

rightAdjunct' :: ForallF c f => (a -> f b) -> Free c a -> f bSource

rightAdjunct'' :: ForallT c t => (a -> t f b) -> Free c a -> t f bSource

newtype LiftAFree c f a Source

Constructors

LiftAFree 

Fields

getLiftAFree :: f (Free c a)
 

convert :: (c (f a), Applicative f) => Free c a -> f aSource