Safe Haskell | None |
---|---|

Language | Haskell98 |

# Documentation

class Effect (m :: k -> * -> *) where Source #

Specifies "parametric effect monads" which are essentially monads but
annotated by a type-level monoid formed by `Plus`

and `Unit`

Effect of a trivially effectful computation |

type Plus m (f :: k) (g :: k) :: k Source #

Cominbing effects of two subcomputations |

type Inv m (f :: k) (g :: k) :: Constraint Source #

return :: a -> m (Unit m) a Source #

Effect-parameterised version of `return`

. Annotated with the 'Unit m' effect,
denoting pure compuation

(>>=) :: Inv m f g => m f a -> (a -> m g b) -> m (Plus m f g) b Source #

Effect-parameterise version of `>>=`

(bind). Combines
two effect annotations `f`

and `g`

on its parameter computations into `Plus`

(>>) :: Inv m f g => m f a -> m g b -> m (Plus m f g) b Source #

Effect Nat Counter Source # | |

Effect [*] State Source # | |

Effect [*] Reader Source # | |

Effect [*] WriteOnce Source # | |

Effect [Mapping Symbol *] Reader Source # | |

Effect [Mapping Symbol *] Writer Source # | |

Effect (Maybe *) Update Source # | |

Effect * Counter Source # | |

Effect * IMaybe Source # | |

Effect * Vector Source # | |

Monad m => Effect * (Monad m) Source # | |

Effect (Morph * *) T Source # | |