cubix-compdata-1.0.1: Compositional Data Types for Cubix
Copyright(c) 2011 Patrick Bahr
LicenseBSD3
MaintainerPatrick Bahr <paba@diku.dk>
Stabilityexperimental
Portabilitynon-portable (GHC Extensions)
Safe HaskellSafe
LanguageHaskell98

Data.Comp.Multi.HFunctor

Description

This module defines higher-order functors (Johann, Ghani, POPL '08), i.e. endofunctors on the category of endofunctors.

Synopsis

Documentation

class HFunctor h where Source #

This class represents higher-order functors (Johann, Ghani, POPL '08) which are endofunctors on the category of endofunctors.

Methods

hfmap :: (f :-> g) -> h f :-> h g Source #

A higher-order functor f also maps a natural transformation g :-> h to a natural transformation f g :-> f h

Instances

Instances details
All HFunctor fs => HFunctor (Sum fs) Source # 
Instance details

Defined in Data.Comp.Multi.Ops

Methods

hfmap :: forall (f :: Type -> Type) (g :: Type -> Type). (f :-> g) -> Sum fs f :-> Sum fs g Source #

HFunctor f => HFunctor (Cxt h f) Source # 
Instance details

Defined in Data.Comp.Multi.Term

Methods

hfmap :: forall (f0 :: Type -> Type) (g :: Type -> Type). (f0 :-> g) -> Cxt h f f0 :-> Cxt h f g Source #

Functor f => HFunctor (Compose f :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

hfmap :: forall (f0 :: Type -> Type) (g :: Type -> Type). (f0 :-> g) -> Compose f f0 :-> Compose f g Source #

HFunctor f => HFunctor (f :&: a) Source # 
Instance details

Defined in Data.Comp.Multi.Ops

Methods

hfmap :: forall (f0 :: Type -> Type) (g :: Type -> Type). (f0 :-> g) -> (f :&: a) f0 :-> (f :&: a) g Source #

type (:->) f g = forall i. f i -> g i infixr 0 Source #

This type represents natural transformations.

type (:=>) f a = forall i. f i -> a infixr 0 Source #

This type represents co-cones from f to a. f :=> a is isomorphic to f :-> K a

type NatM m f g = forall i. f i -> m (g i) Source #

newtype I a Source #

The identity Functor.

Constructors

I 

Fields

Instances

Instances details
Functor I Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

fmap :: (a -> b) -> I a -> I b #

(<$) :: a -> I b -> I a #

Foldable I Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

fold :: Monoid m => I m -> m #

foldMap :: Monoid m => (a -> m) -> I a -> m #

foldMap' :: Monoid m => (a -> m) -> I a -> m #

foldr :: (a -> b -> b) -> b -> I a -> b #

foldr' :: (a -> b -> b) -> b -> I a -> b #

foldl :: (b -> a -> b) -> b -> I a -> b #

foldl' :: (b -> a -> b) -> b -> I a -> b #

foldr1 :: (a -> a -> a) -> I a -> a #

foldl1 :: (a -> a -> a) -> I a -> a #

toList :: I a -> [a] #

null :: I a -> Bool #

length :: I a -> Int #

elem :: Eq a => a -> I a -> Bool #

maximum :: Ord a => I a -> a #

minimum :: Ord a => I a -> a #

sum :: Num a => I a -> a #

product :: Num a => I a -> a #

Traversable I Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

traverse :: Applicative f => (a -> f b) -> I a -> f (I b) #

sequenceA :: Applicative f => I (f a) -> f (I a) #

mapM :: Monad m => (a -> m b) -> I a -> m (I b) #

sequence :: Monad m => I (m a) -> m (I a) #

newtype K a i Source #

The parametrised constant functor.

Constructors

K 

Fields

Instances

Instances details
Functor (K a) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

fmap :: (a0 -> b) -> K a a0 -> K a b #

(<$) :: a0 -> K a b -> K a a0 #

Foldable (K a) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

fold :: Monoid m => K a m -> m #

foldMap :: Monoid m => (a0 -> m) -> K a a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> K a a0 -> m #

foldr :: (a0 -> b -> b) -> b -> K a a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> K a a0 -> b #

foldl :: (b -> a0 -> b) -> b -> K a a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> K a a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> K a a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> K a a0 -> a0 #

toList :: K a a0 -> [a0] #

null :: K a a0 -> Bool #

length :: K a a0 -> Int #

elem :: Eq a0 => a0 -> K a a0 -> Bool #

maximum :: Ord a0 => K a a0 -> a0 #

minimum :: Ord a0 => K a a0 -> a0 #

sum :: Num a0 => K a a0 -> a0 #

product :: Num a0 => K a a0 -> a0 #

Traversable (K a) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

traverse :: Applicative f => (a0 -> f b) -> K a a0 -> f (K a b) #

sequenceA :: Applicative f => K a (f a0) -> f (K a a0) #

mapM :: Monad m => (a0 -> m b) -> K a a0 -> m (K a b) #

sequence :: Monad m => K a (m a0) -> m (K a a0) #

Eq a => KEq (K a) Source # 
Instance details

Defined in Data.Comp.Multi.Equality

Methods

keq :: K a i -> K a j -> Bool Source #

Ord a => KOrd (K a) Source # 
Instance details

Defined in Data.Comp.Multi.Ordering

Methods

kcompare :: K a i -> K a j -> Ordering Source #

KShow (K ()) Source # 
Instance details

Defined in Data.Comp.Multi.Show

Methods

kshow :: K () i -> K String i Source #

KShow (K String) Source # 
Instance details

Defined in Data.Comp.Multi.Show

Methods

kshow :: K String i -> K String i Source #

Eq a => Eq (K a i) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

(==) :: K a i -> K a i -> Bool #

(/=) :: K a i -> K a i -> Bool #

Ord a => Ord (K a i) Source # 
Instance details

Defined in Data.Comp.Multi.HFunctor

Methods

compare :: K a i -> K a i -> Ordering #

(<) :: K a i -> K a i -> Bool #

(<=) :: K a i -> K a i -> Bool #

(>) :: K a i -> K a i -> Bool #

(>=) :: K a i -> K a i -> Bool #

max :: K a i -> K a i -> K a i #

min :: K a i -> K a i -> K a i #

Generic (f (HFix f) l) => Generic (HFix f l) Source # 
Instance details

Defined in Data.Comp.Multi.Derive.Generic

Associated Types

type Rep (HFix f l) :: Type -> Type #

Methods

from :: HFix f l -> Rep (HFix f l) x #

to :: Rep (HFix f l) x -> HFix f l #

type Rep (HFix f l) Source # 
Instance details

Defined in Data.Comp.Multi.Derive.Generic

type Rep (HFix f l) = Rep (f (HFix f) l)

data A f Source #

Constructors

A 

Fields

  • unA :: forall i. f i
     

data E f Source #

Constructors

forall i. E 

Fields

Instances

Instances details
KEq a => Eq (E a) Source # 
Instance details

Defined in Data.Comp.Multi.Equality

Methods

(==) :: E a -> E a -> Bool #

(/=) :: E a -> E a -> Bool #

KOrd f => Ord (E f) Source # 
Instance details

Defined in Data.Comp.Multi.Ordering

Methods

compare :: E f -> E f -> Ordering #

(<) :: E f -> E f -> Bool #

(<=) :: E f -> E f -> Bool #

(>) :: E f -> E f -> Bool #

(>=) :: E f -> E f -> Bool #

max :: E f -> E f -> E f #

min :: E f -> E f -> E f #

runE :: (f :=> b) -> E f -> b Source #

rewriteE :: (forall l. f l -> f l) -> E f -> E f Source #

rewriteEM :: Functor m => (forall l. f l -> m (f l)) -> E f -> m (E f) Source #

data (f :.: (g :: (* -> *) -> * -> *)) (e :: * -> *) t infixl 5 Source #

This data type denotes the composition of two functor families.

Constructors

Comp (f (g e) t) 

newtype HMonad m f i Source #

Constructors

HMonad 

Fields