semigroupoid-extras-5: Semigroupoids that depend on PolyKinds

Copyright(C) 2011-2015 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
PortabilityMPTCs, GADTs
Safe HaskellTrustworthy
LanguageHaskell98

Data.Semifunctor.Braided

Description

 

Documentation

class Associative k p => Braided k p where #

Minimal complete definition

braid

Methods

braid :: k (p '(a, b)) (p '(b, a)) #

Instances

(Bind m, Monad m) => Braided * (Kleisli m) (Bi * * (,)) # 

Methods

braid :: Bi * * (,) (p ((Kleisli m, Kleisli m) a b)) (p ((Kleisli m, Kleisli m) b a)) #

(Bind m, Monad m) => Braided * (Kleisli m) (Bi * * Either) # 

Methods

braid :: Bi * * Either (p ((Kleisli m, Kleisli m) a b)) (p ((Kleisli m, Kleisli m) b a)) #

Braided * ((->) LiftedRep LiftedRep) (Bi * * Either) # 

Methods

braid :: Bi * * Either (p ((LiftedRep -> LiftedRep, LiftedRep -> LiftedRep) a b)) (p ((LiftedRep -> LiftedRep, LiftedRep -> LiftedRep) b a)) #

Braided * ((->) LiftedRep LiftedRep) (Bi * * (,)) # 

Methods

braid :: Bi * * (,) (p ((LiftedRep -> LiftedRep, LiftedRep -> LiftedRep) a b)) (p ((LiftedRep -> LiftedRep, LiftedRep -> LiftedRep) b a)) #

kleisliBraid :: (Monad m, Semifunctor p (Product (Kleisli m) (Kleisli m)) (Kleisli m), Braided (->) p) => Kleisli m (p '(a, b)) (p '(b, a)) #

class Braided k p => Symmetric k p #

Instances

swap :: Symmetric k p => k (p '(a, b)) (p '(b, a)) #