deepcontrol-0.5.4.1: A library that provides deep-level programming style or notation on Applicative and Monad

Safe HaskellSafe
LanguageHaskell2010

DeepControl.Monad.Signatures

Contents

Description

Deepened the usual Control.Monad.Signatures module. Module : DeepControl.Monad.Signatures Copyright : (c) Ross Paterson 2012, (c) 2015 KONISHI Yohsuke License : BSD-style (see the file LICENSE)

Maintainer : KONISHI Yohsuke Stability : experimental Portability : portable

Signatures for monad operations that require specialized lifting. Each signature has a uniformity property that the lifting should satisfy.

Synopsis

Level-1

Level-2

type CallCC2 m1 m2 a b = ((a -> m1 (m2 b)) -> m1 (m2 a)) -> m1 (m2 a) Source

type Catch2 e m1 m2 a = m1 (m2 a) -> (e -> m1 (m2 a)) -> m1 (m2 a) Source

type Listen2 w m1 m2 a = m1 (m2 a) -> m1 (m2 (a, w)) Source

type Pass2 w m1 m2 a = m1 (m2 (a, w -> w)) -> m1 (m2 a) Source

Level-3

type CallCC3 m1 m2 m3 a b = ((a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 a))) -> m1 (m2 (m3 a)) Source

type Catch3 e m1 m2 m3 a = m1 (m2 (m3 a)) -> (e -> m1 (m2 (m3 a))) -> m1 (m2 (m3 a)) Source

type Listen3 w m1 m2 m3 a = m1 (m2 (m3 a)) -> m1 (m2 (m3 (a, w))) Source

type Pass3 w m1 m2 m3 a = m1 (m2 (m3 (a, w -> w))) -> m1 (m2 (m3 a)) Source

Level-4

type CallCC4 m1 m2 m3 m4 a b = ((a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 a)))) -> m1 (m2 (m3 (m4 a))) Source

type Catch4 e m1 m2 m3 m4 a = m1 (m2 (m3 (m4 a))) -> (e -> m1 (m2 (m3 (m4 a)))) -> m1 (m2 (m3 (m4 a))) Source

type Listen4 w m1 m2 m3 m4 a = m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 (a, w)))) Source

type Pass4 w m1 m2 m3 m4 a = m1 (m2 (m3 (m4 (a, w -> w)))) -> m1 (m2 (m3 (m4 a))) Source

Level-5

type CallCC5 m1 m2 m3 m4 m5 a b = ((a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 a))))) -> m1 (m2 (m3 (m4 (m5 a)))) Source

type Catch5 e m1 m2 m3 m4 m5 a = m1 (m2 (m3 (m4 (m5 a)))) -> (e -> m1 (m2 (m3 (m4 (m5 a))))) -> m1 (m2 (m3 (m4 (m5 a)))) Source

type Listen5 w m1 m2 m3 m4 m5 a = m1 (m2 (m3 (m4 (m5 a)))) -> m1 (m2 (m3 (m4 (m5 (a, w))))) Source

type Pass5 w m1 m2 m3 m4 m5 a = m1 (m2 (m3 (m4 (m5 (a, w -> w))))) -> m1 (m2 (m3 (m4 (m5 a)))) Source