multistate: like mtl's ReaderT/WriterT/StateT, but more than one contained value/type.

[ bsd3, control, library ] [ Propose Tags ]

When using multiple ReadWriteState transformers in the same monad stack, it becomes necessary to lift the operations in order to affect a specific transformer. Using heterogenous lists (and all kinds of GHC extensions magic), this package provides transformers that remove that necessity: MultiReaderTMultiWriterTMultiStateT can contain a heterogenous list of values.

See the README for a longer description.

Versions [faq] 0.1.1, 0.1.2,,,,,,,,,,,,,
Dependencies base (>=4.6 && <4.9), mtl (>=2.1 && <2.3), multistate, transformers (>=0.3 && <0.5) [details]
License BSD-3-Clause
Copyright Jan Bracker, Lennart Spitzner
Author Jan Bracker, Lennart Spitzner
Maintainer Lennart Spitzner <>
Category Control
Home page
Bug tracker
Source repo head: git clone
Uploaded by lspitzner at Thu Jan 22 20:05:22 UTC 2015
Distributions NixOS:, Stackage:
Executables multistate-example, multistate-test
Downloads 9202 total (561 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]





Build the MultiState-test test program


Build the MultiState-example example program


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees