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

Data.Semifunctor.Associative

Description

 

Documentation

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

Methods

associate :: k (p `(p `(a, b)`, c)`) (p `(a, p `(b, c)`)`) Source

Instances

Associative * (->) (Bi * * Either) 
Associative * (->) (Bi * * (,)) 
(Bind m, Monad m) => Associative * (Kleisli m) (Bi * * (,)) 
(Bind m, Monad m) => Associative * (Kleisli m) (Bi * * Either) 

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)`)`) Source

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

Methods

disassociate :: k (p `(a, p `(b, c)`)`) (p `(p `(a, b)`, c)`) Source

Instances

Disassociative * (->) (Bi * * Either) 
Disassociative * (->) (Bi * * (,)) 
(Bind m, Monad m) => Disassociative * (Kleisli m) (Bi * * (,)) 
(Bind m, Monad m) => Disassociative * (Kleisli m) (Bi * * Either) 

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)`) Source