packages feed

do-notation-0.1.0.0: README.md

# do-notation

[![Build Status](https://travis-ci.org/isovector/do-notation.svg?branch=master)](https://travis-ci.org/isovector/do-notation) | [Hackage][hackage]

[hackage]: https://hackage.haskell.org/package/do-notation


## Dedication

> I've just locked an open door. Strange, yet symbolically compelling.
>
> Manny Calavera, Grim Fandango


## Overview

Have you ever wanted to manage siiiick invariants with indexed monads without
giving up your regular monads in the process? `do-notation` lets you do this
with a bunch of type jiggery-pokery behind the scenes.

It also provides the `Ix m` indexed monad which is a free construction over a
regular monad `m`. Cool.


## Usage

```haskell
{-# LANGUAGE RebindableSyntax #-}

import Language.Haskell.DoNotation
import Prelude hiding (Monad (..), pure)
```


## Limitations

The implementation doesn't play very nicely with `do`-blocks bound via `let`.


## Thanks

Huge shout-outs to [Csongor Kiss][kcsongor] for very patiently walking me
through the incoherent instance machinery necessary to make this all work.

[kcsongor]: http://kcsongor.github.io/