After a surprisingly long time I'm releasing a new version of my monads
library, focussed on expressivity and correctness:
https://github.com/bwo/monads
Leiningen:
[bwo/monads "0.2.2"]
Improvements from 0.1.0 include:
- change from maps to protocols for monad implementations, which has
increased flexibility and speed (this library is once again a little faster
than morph)
- all monad implementations interoperate with algo.generic.functor
- monad transformers automatically lift operations from "inner" monads, if
they're supported
- a combined reader/writer/state monad (and transformer) was introduced,
and the (faulty) list-t monad transformer was removed
- improvements to call/cc, shift, and reset for the continuation monad
- an applicative functor protocol was introduced, and implementations
provided for several existing types and all monad implementations.
Also, the `mdo` syntax macro was abstracted out and can now accept an
arbitrary user-provided function for doing monadic binds, which should mean
that it can be used with other libraries, though I haven't actually tested
this.
library, focussed on expressivity and correctness:
https://github.com/bwo/monads
Leiningen:
[bwo/monads "0.2.2"]
Improvements from 0.1.0 include:
- change from maps to protocols for monad implementations, which has
increased flexibility and speed (this library is once again a little faster
than morph)
- all monad implementations interoperate with algo.generic.functor
- monad transformers automatically lift operations from "inner" monads, if
they're supported
- a combined reader/writer/state monad (and transformer) was introduced,
and the (faulty) list-t monad transformer was removed
- improvements to call/cc, shift, and reset for the continuation monad
- an applicative functor protocol was introduced, and implementations
provided for several existing types and all monad implementations.
Also, the `mdo` syntax macro was abstracted out and can now accept an
arbitrary user-provided function for doing monadic binds, which should mean
that it can be used with other libraries, though I haven't actually tested
this.