indexed-0.1.3: Haskell98 indexed functors, monads, comonads
Copyright(C) 2008 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerReiner Pope <reiner.pope@gmail.com>
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell98

Control.Monad.Indexed

Description

 

Documentation

class IxFunctor (f :: k -> k1 -> Type -> Type) where Source #

Methods

imap :: forall a b (j :: k) (k2 :: k1). (a -> b) -> f j k2 a -> f j k2 b Source #

class IxFunctor m => IxPointed (m :: k -> k -> Type -> Type) where Source #

Methods

ireturn :: forall a (i :: k). a -> m i i a Source #

class IxPointed m => IxApplicative (m :: k -> k -> Type -> Type) where Source #

Methods

iap :: forall (i :: k) (j :: k) a b (k1 :: k). m i j (a -> b) -> m j k1 a -> m i k1 b Source #

class IxApplicative m => IxMonad (m :: k -> k -> Type -> Type) where Source #

Methods

ibind :: forall a (j :: k) (k1 :: k) b (i :: k). (a -> m j k1 b) -> m i j a -> m i k1 b Source #

class IxMonad m => IxMonadZero (m :: k -> k -> Type -> Type) where Source #

Methods

imzero :: forall (i :: k) (j :: k) a. m i j a Source #

class IxMonadZero m => IxMonadPlus (m :: k -> k -> Type -> Type) where Source #

Methods

implus :: forall (i :: k) (j :: k) a. m i j a -> m i j a -> m i j a Source #

ijoin :: forall {k1} m (i :: k1) (j :: k1) (k2 :: k1) a. IxMonad m => m i j (m j k2 a) -> m i k2 a Source #

(>>>=) :: forall {k1} m (i :: k1) (j :: k1) a (k2 :: k1) b. IxMonad m => m i j a -> (a -> m j k2 b) -> m i k2 b infixl 1 Source #

(=<<<) :: forall {k1} m a (j :: k1) (k2 :: k1) b (i :: k1). IxMonad m => (a -> m j k2 b) -> m i j a -> m i k2 b infixr 1 Source #

iapIxMonad :: forall {k1} m (i :: k1) (j :: k1) a b (k2 :: k1). IxMonad m => m i j (a -> b) -> m j k2 a -> m i k2 b Source #