-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Compositional Data Types -- -- Modular data types defined as fixpoints, and term homomorphisms, like -- compdata package but with cleaner API @package compositional-data @version 0.1.0.1 module Control.Monad.Trans.Fresh data FreshT m a evalFreshT :: FreshT m a -> m a type Fresh = FreshT Identity evalFresh :: Fresh a -> a withName :: Monad m => (Name i -> FreshT m a) -> FreshT m a data Name i instance forall k (i :: k). GHC.Classes.Eq (Control.Monad.Trans.Fresh.Name i) instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Control.Monad.Trans.Fresh.FreshT m) instance GHC.Base.Alternative m => GHC.Base.Alternative (Control.Monad.Trans.Fresh.FreshT m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Trans.Fresh.FreshT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Monad.Trans.Fresh.FreshT m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Trans.Fresh.FreshT m) instance forall α (s :: α -> α -> *). Control.Category.Category s => Control.Categorical.Functor.Functor s (->) Control.Monad.Trans.Fresh.Name instance forall k (i :: k). GHC.Show.Show (Control.Monad.Trans.Fresh.Name i) module Data.Comp.Show class ShowH f showH :: ShowH f => f Name (Const (Fresh [Char])) i -> Fresh [Char] module Data.Comp.Equality class PEq a peq :: PEq a => a i -> a j -> Fresh Bool class EqH f eqH :: (EqH f, PEq a) => f Name a i -> f Name a j -> Fresh Bool instance GHC.Classes.Eq a => Data.Comp.Equality.PEq (Data.Functor.Const.Const a) instance Data.Comp.Equality.PEq Control.Monad.Trans.Fresh.Name module Data.Comp.Term data Cxt (h :: Bool) f a b i [In] :: f a (Cxt h f a b) i -> Cxt h f a b i [Hole] :: b i -> Cxt True f a b i [Var] :: a i -> Cxt h f a b i newtype Term f i Term :: (forall a. Trm f a i) -> Term f i [unTerm] :: Term f i -> forall a. Trm f a i type Trm f a = Cxt False f a (Const ()) toCxt :: Bifunctor (Dual (NT (->))) (NT (->)) (NT (->)) f => Trm f a i -> Cxt h f a b i instance forall k (f :: (k -> *) -> (k -> *) -> k -> *) (i :: k). Data.Comp.Equality.EqH f => GHC.Classes.Eq (Data.Comp.Term.Term f i) instance forall k (f :: (k -> *) -> (k -> *) -> k -> *) (i :: k). (Control.Categorical.Bifunctor.Bifunctor (Control.Category.Dual.Dual (Control.Categorical.Functor.NT (->))) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) f, Data.Comp.Show.ShowH f) => GHC.Show.Show (Data.Comp.Term.Term f i) instance forall k1 (f :: (k1 -> *) -> (k1 -> *) -> k1 -> *) (a :: k1 -> *) (h :: GHC.Types.Bool). Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (f a) => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Data.Comp.Term.Cxt h f a) instance forall k1 (f :: (k1 -> *) -> (k1 -> *) -> k1 -> *) (h :: GHC.Types.Bool). Control.Categorical.Bifunctor.Bifunctor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) f => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (Control.Categorical.Functor.NT (->))) (Data.Comp.Term.Cxt h f) instance forall k1 (f :: (k1 -> *) -> (k1 -> *) -> k1 -> *) (h :: GHC.Types.Bool). Control.Categorical.Bifunctor.Bifunctor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) f => Control.Categorical.Bifunctor.Bifunctor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Data.Comp.Term.Cxt h f) instance forall k (f :: (k -> *) -> (k -> *) -> k -> *) (h :: GHC.Types.Bool). Data.Comp.Equality.EqH f => Data.Comp.Equality.EqH (Data.Comp.Term.Cxt h f) instance forall k (f :: (k -> *) -> (k -> *) -> k -> *) (a :: k -> *) (h :: GHC.Types.Bool). (Data.Comp.Equality.EqH f, Data.Comp.Equality.PEq a) => Data.Comp.Equality.PEq (Data.Comp.Term.Cxt h f Control.Monad.Trans.Fresh.Name a) instance forall k (f :: (k -> *) -> (k -> *) -> k -> *) (h :: GHC.Types.Bool). (Control.Categorical.Bifunctor.Bifunctor (Control.Category.Dual.Dual (Control.Categorical.Functor.NT (->))) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) f, Data.Comp.Show.ShowH f) => Data.Comp.Show.ShowH (Data.Comp.Term.Cxt h f)