cognimeta-utils-0.1.2: Utilities for Cognimeta products (such as perdure). API may change often.

Safe HaskellNone

Cgm.Control.InFunctor

Documentation

($*) :: Function f => f a b -> a -> bSource

type :>>= a b = Increasing' a bSource

uncheckedInjectionA :: (a -> b) -> (b -> Maybe a) -> InjectionA' a bSource

class InjectionA f => Injection f whereSource

Methods

retract :: f a b -> b -> aSource

uncheckedInjection :: (a -> b) -> (b -> a) -> Injection' a bSource

pairInjection :: (Injection f1, Injection f2) => f1 a1 b1 -> f2 a2 b2 -> Injection' (a1, a2) (b1, b2)Source

uncheckedInjectionM :: (a -> b) -> (b -> Maybe a) -> InjectionM' a bSource

uncheckedBijection :: (a -> b) -> (b -> a) -> Bijection' a bSource

pairBijection :: (Bijection f1, Bijection f2) => f1 a1 b1 -> f2 a2 b2 -> Bijection' (a1, a2) (b1, b2)Source

inv :: Bijection f => f a b -> Bijection' b aSource

liftAB :: (Bijection g, Applicative f) => g a b -> Bijection' (f a) (f b)Source

class InjectionACofunctor f whereSource

Methods

iacomap :: InjectionA g => f b -> g a b -> f aSource

class InjectionCofunctor f whereSource

Methods

icomap :: Injection g => f b -> g a b -> f aSource

class InjectionMCofunctor f whereSource

Methods

imcomap :: InjectionM g => f b -> g a b -> f aSource

class ExpFunctor f whereSource

Methods

bmap :: Bijection g => g a b -> f a -> f bSource

class IncreasingFunctor f whereSource

Methods

incmap :: Increasing g => g a b -> f a -> f bSource

class Cofunctor f whereSource

Methods

(>$<) :: f b -> (a -> b) -> f aSource

Instances

functorCofunctorComap :: (Functor f, Cofunctor c) => Compose f c b -> (a -> b) -> Compose f c aSource

class Comonoidal f whereSource

Methods

munit :: f ()Source

mpair :: f a -> f b -> f (a, b)Source

Instances

functorIacomap :: (Functor f, InjectionA g) => f b -> g a b -> f aSource

cofunctorIacomap :: (Cofunctor f, InjectionA g) => f b -> g a b -> f aSource

newtype RevFun b a Source

Constructors

RevFun 

Fields

getRevFun :: a -> b
 

Instances

wrapU :: (Bijection og, Function i1g) => og o o' -> i1g i1 i1' -> (i1' -> o') -> i1 -> oSource

wrapB :: (Bijection og, Function i1g, Function i2g) => og o o' -> i1g i1 i1' -> i2g i2 i2' -> (i1' -> i2' -> o') -> i1 -> i2 -> oSource

liftItI :: Injection f => f a b -> (b -> b) -> a -> aSource

liftIItK :: Function f => f a a' -> (a' -> a' -> b) -> a -> a -> bSource

liftIItI :: Injection f => f a2 a' -> (a' -> a' -> a') -> a2 -> a2 -> a2Source

liftIKtI :: Injection f => f a1 a' -> (a' -> a -> a') -> a1 -> a -> a1Source

liftIItII :: Injection f => f a2 a' -> (a' -> a' -> (a', a')) -> a2 -> a2 -> (a2, a2)Source