recursion-schemes-ix-0.1.0.0: Recursion schemes over indexed Functors
Safe HaskellNone
LanguageHaskell2010

Data.IComonad

Contents

Synopsis

Documentation

class IFunctor f => IComonad f where Source #

Comonoid in the category of dependent endofunctors

Minimal complete definition

iextract, (iduplicate | iextend)

Methods

iextract :: f a ~~> a Source #

iduplicate :: f a ~~> f (f a) Source #

iextend :: (f a ~~> b) -> f a ~~> f b Source #

Instances

Instances details
IComonad (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

iextract :: forall (a :: k0 -> Type). IIdentity a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). IIdentity a ~~> IIdentity (IIdentity a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (IIdentity a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IComonad (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IComonad

Methods

iextract :: forall (a0 :: k0 -> Type). Product a a0 ~~> a0 Source #

iduplicate :: forall (a0 :: k0 -> Type). Product a a0 ~~> Product a (Product a a0) Source #

iextend :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (Product a a0 ~~> b) -> Product a a0 ~~> Product a b Source #

IFunctor f => IComonad (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

iextract :: forall (a :: k0 -> Type). ICofree f a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). ICofree f a ~~> ICofree f (ICofree f a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (ICofree f a ~~> b) -> ICofree f a ~~> ICofree f b Source #

Re-exports

type (~~>) a b = forall ix. SingI ix => a ix -> b ix infixr 4 Source #

Indexed function type

class IFunctor f where Source #

Functor in the category of dependent types

Methods

imap :: (a ~~> b) -> f a ~~> f b Source #

Instances

Instances details
IFunctor (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IFunctor (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Product a a0 ~~> Product a b Source #

IFunctor (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Sum a a0 ~~> Sum a b Source #

IFunctor f => IFunctor (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IFree f a ~~> IFree f b Source #

IFunctor f => IFunctor (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> ICofree f a ~~> ICofree f b Source #