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 HaskellSafe
LanguageHaskell98

Data.Semifunctor.Associative

Description

 

Documentation

class Semifunctor p (Product k k) k => Associative k p where #

Minimal complete definition

associate

Methods

associate :: k (p '(p '(a, b), c)) (p '(a, p '(b, c))) #

Instances
(Bind m, Monad m) => Associative (Kleisli m :: * -> * -> *) (Bi (,)) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

associate :: Kleisli m (Bi (,) (Bi (,) (a, b), c)) (Bi (,) (a, Bi (,) (b, c))) #

(Bind m, Monad m) => Associative (Kleisli m :: * -> * -> *) (Bi Either) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

associate :: Kleisli m (Bi Either (Bi Either (a, b), c)) (Bi Either (a, Bi Either (b, c))) #

Associative ((->) :: * -> * -> *) (Bi Either) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

associate :: Bi Either (Bi Either (a, b), c) -> Bi Either (a, Bi Either (b, c)) #

Associative ((->) :: * -> * -> *) (Bi (,)) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

associate :: Bi (,) (Bi (,) (a, b), c) -> Bi (,) (a, Bi (,) (b, c)) #

kleisliAssociate :: (Monad m, Semifunctor p (Product (Kleisli m) (Kleisli m)) (Kleisli m), Associative (->) p) => Kleisli m (p '(p '(a, b), c)) (p '(a, p '(b, c))) #

class Semifunctor p (Product k k) k => Disassociative k p where #

Minimal complete definition

disassociate

Methods

disassociate :: k (p '(a, p '(b, c))) (p '(p '(a, b), c)) #

Instances
(Bind m, Monad m) => Disassociative (Kleisli m :: * -> * -> *) (Bi (,)) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

disassociate :: Kleisli m (Bi (,) (a, Bi (,) (b, c))) (Bi (,) (Bi (,) (a, b), c)) #

(Bind m, Monad m) => Disassociative (Kleisli m :: * -> * -> *) (Bi Either) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

disassociate :: Kleisli m (Bi Either (a, Bi Either (b, c))) (Bi Either (Bi Either (a, b), c)) #

Disassociative ((->) :: * -> * -> *) (Bi Either) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

disassociate :: Bi Either (a, Bi Either (b, c)) -> Bi Either (Bi Either (a, b), c) #

Disassociative ((->) :: * -> * -> *) (Bi (,)) # 
Instance details

Defined in Data.Semifunctor.Associative

Methods

disassociate :: Bi (,) (a, Bi (,) (b, c)) -> Bi (,) (Bi (,) (a, b), c) #

kleisliDisassociate :: (Monad m, Semifunctor p (Product (Kleisli m) (Kleisli m)) (Kleisli m), Disassociative (->) p) => Kleisli m (p '(a, p '(b, c))) (p '(p '(a, b), c)) #