multivariant-0.1.0.1: Multivariant assignments generation language

Safe HaskellSafe
LanguageHaskell2010

Control.Invertible.BiArrow.Free

Documentation

data FreeA p a b Source #

Constructors

PureP (a <-> b) 
(p a x) :- (FreeA p x b) infixr 9 

Instances

IsoProfunctor p => Category * (FreeA p) Source # 

Methods

id :: cat a a #

(.) :: cat b c -> cat a b -> cat a c #

(IsoProfunctor p, Groupoid * p) => Groupoid * (FreeA p) Source # 

Methods

inv :: k1 a b -> k1 b a #

IsoProfunctor p => Semigroupoid * (FreeA p) Source # 

Methods

o :: c j k1 -> c i j -> c i k1 #

(IsoProfunctor p, Groupoid * p) => BiArrow (FreeA p) Source # 

Methods

(<->) :: (b -> c) -> (c -> b) -> FreeA p b c #

invert :: FreeA p b c -> FreeA p c b #

IsoProfunctor b => IsoProfunctor (FreeA b) Source # 

Methods

dimap :: (a <-> b) -> (c <-> d) -> FreeA b b c -> FreeA b a d Source #

lmap :: (a <-> b) -> FreeA b b c -> FreeA b a c Source #

rmap :: (b <-> c) -> FreeA b a b -> FreeA b a c Source #

IsoStrong p => IsoStrong (FreeA p) Source # 

Methods

first' :: FreeA p a b -> FreeA p (a, c) (b, c) Source #

second' :: FreeA p a b -> FreeA p (c, a) (c, b) Source #

revinv :: (IsoProfunctor p, Groupoid p) => (forall x y. p x y -> p y x) -> FreeA p a b -> FreeA p b a Source #

go :: IsoProfunctor p => (forall x y. p x y -> p y x) -> FreeA p x d -> FreeA p x c -> FreeA p d c Source #