deepcontrol-0.5.4.0: Provide deep level programming style for Applicative and Monad

Copyright(c) Ross Paterson 2002
(c) 2015 KONISHI Yohsuke
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainerocean0yohsuke@gmail.com
Stabilityexperimental
Portability---
Safe HaskellSafe
LanguageHaskell2010

DeepControl.Arrow

Description

 

Documentation

newtype Kleisli2 m1 m2 a b Source #

Constructors

Kleisli2 

Fields

Instances

(Monad m1, Monad m2, Traversable m2) => Category * (Kleisli2 m1 m2) Source # 

Methods

id :: cat a a #

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

(Monad m1, Monad m2, Traversable m2) => Arrow (Kleisli2 m1 m2) Source # 

Methods

arr :: (b -> c) -> Kleisli2 m1 m2 b c #

first :: Kleisli2 m1 m2 b c -> Kleisli2 m1 m2 (b, d) (c, d) #

second :: Kleisli2 m1 m2 b c -> Kleisli2 m1 m2 (d, b) (d, c) #

(***) :: Kleisli2 m1 m2 b c -> Kleisli2 m1 m2 b' c' -> Kleisli2 m1 m2 (b, b') (c, c') #

(&&&) :: Kleisli2 m1 m2 b c -> Kleisli2 m1 m2 b c' -> Kleisli2 m1 m2 b (c, c') #

newtype Kleisli3 m1 m2 m3 a b Source #

Constructors

Kleisli3 

Fields

Instances

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3) => Category * (Kleisli3 m1 m2 m3) Source # 

Methods

id :: cat a a #

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

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3) => Arrow (Kleisli3 m1 m2 m3) Source # 

Methods

arr :: (b -> c) -> Kleisli3 m1 m2 m3 b c #

first :: Kleisli3 m1 m2 m3 b c -> Kleisli3 m1 m2 m3 (b, d) (c, d) #

second :: Kleisli3 m1 m2 m3 b c -> Kleisli3 m1 m2 m3 (d, b) (d, c) #

(***) :: Kleisli3 m1 m2 m3 b c -> Kleisli3 m1 m2 m3 b' c' -> Kleisli3 m1 m2 m3 (b, b') (c, c') #

(&&&) :: Kleisli3 m1 m2 m3 b c -> Kleisli3 m1 m2 m3 b c' -> Kleisli3 m1 m2 m3 b (c, c') #

newtype Kleisli4 m1 m2 m3 m4 a b Source #

Constructors

Kleisli4 

Fields

Instances

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3, Monad m4, Traversable m4) => Category * (Kleisli4 m1 m2 m3 m4) Source # 

Methods

id :: cat a a #

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

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3, Monad m4, Traversable m4) => Arrow (Kleisli4 m1 m2 m3 m4) Source # 

Methods

arr :: (b -> c) -> Kleisli4 m1 m2 m3 m4 b c #

first :: Kleisli4 m1 m2 m3 m4 b c -> Kleisli4 m1 m2 m3 m4 (b, d) (c, d) #

second :: Kleisli4 m1 m2 m3 m4 b c -> Kleisli4 m1 m2 m3 m4 (d, b) (d, c) #

(***) :: Kleisli4 m1 m2 m3 m4 b c -> Kleisli4 m1 m2 m3 m4 b' c' -> Kleisli4 m1 m2 m3 m4 (b, b') (c, c') #

(&&&) :: Kleisli4 m1 m2 m3 m4 b c -> Kleisli4 m1 m2 m3 m4 b c' -> Kleisli4 m1 m2 m3 m4 b (c, c') #

newtype Kleisli5 m1 m2 m3 m4 m5 a b Source #

Constructors

Kleisli5 

Fields

Instances

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3, Monad m4, Traversable m4, Monad m5, Traversable m5) => Category * (Kleisli5 m1 m2 m3 m4 m5) Source # 

Methods

id :: cat a a #

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

(Monad m1, Monad m2, Traversable m2, Monad m3, Traversable m3, Monad m4, Traversable m4, Monad m5, Traversable m5) => Arrow (Kleisli5 m1 m2 m3 m4 m5) Source # 

Methods

arr :: (b -> c) -> Kleisli5 m1 m2 m3 m4 m5 b c #

first :: Kleisli5 m1 m2 m3 m4 m5 b c -> Kleisli5 m1 m2 m3 m4 m5 (b, d) (c, d) #

second :: Kleisli5 m1 m2 m3 m4 m5 b c -> Kleisli5 m1 m2 m3 m4 m5 (d, b) (d, c) #

(***) :: Kleisli5 m1 m2 m3 m4 m5 b c -> Kleisli5 m1 m2 m3 m4 m5 b' c' -> Kleisli5 m1 m2 m3 m4 m5 (b, b') (c, c') #

(&&&) :: Kleisli5 m1 m2 m3 m4 m5 b c -> Kleisli5 m1 m2 m3 m4 m5 b c' -> Kleisli5 m1 m2 m3 m4 m5 b (c, c') #