universe-instances-trans-1.0.0.1: Universe instances for types from the transformers and mtl packages

Safe HaskellSafe
LanguageHaskell2010

Data.Universe.Instances.Trans

Contents

Synopsis

Documentation

Instances of Universe and Finite for the standard monad and functor transformers.

class Universe a where #

Creating an instance of this class is a declaration that your type is recursively enumerable (and that universe is that enumeration). In particular, you promise that any finite inhabitant has a finite index in universe, and that no inhabitant appears at two different finite indices.

Methods

universe :: [a] #

class Universe a => Finite a where #

Creating an instance of this class is a declaration that your universe eventually ends. Minimal definition: no methods defined. By default, universeF = universe, but for some types (like Either) the universeF method may have a more intuitive ordering.

Methods

universeF :: [a] #

Orphan instances

Universe a => Universe (Identity a) # 

Methods

universe :: [Identity a] #

Finite a => Finite (Identity a) # 

Methods

universeF :: [Identity a] #

Universe (f a) => Universe (IdentityT * f a) # 

Methods

universe :: [IdentityT * f a] #

Finite (f a) => Finite (IdentityT * f a) # 

Methods

universeF :: [IdentityT * f a] #

(Universe (f a), Universe (g a)) => Universe (Product * f g a) # 

Methods

universe :: [Product * f g a] #

(Finite e, Ord e, Universe (m a)) => Universe (ReaderT * e m a) # 

Methods

universe :: [ReaderT * e m a] #

(Finite (f a), Finite (g a)) => Finite (Product * f g a) # 

Methods

universeF :: [Product * f g a] #

(Finite e, Ord e, Finite (m a)) => Finite (ReaderT * e m a) # 

Methods

universeF :: [ReaderT * e m a] #

Universe (f (g a)) => Universe (Compose * * f g a) # 

Methods

universe :: [Compose * * f g a] #

Finite (f (g a)) => Finite (Compose * * f g a) # 

Methods

universeF :: [Compose * * f g a] #