The transformers-supply package

[Tags:bsd3, library]

The Supply monad represents a computation that consumes values from a provided supply.

This package comes with two separate implementations, Control.Applicative.Supply and Control.Monad.Trans.Supply. The former provides an applicative and applicative transformer, the latter a monad and monad transformer.

The reason for providing two separate implementations is that the Applicative instance of Control.Monad.Trans.Supply.SupplyT incurs a Monad constraint on the wrapped type, meaning it's not possible to (usefully) wrap a type that only has an Applicative instance.

The implementation of Control.Applicative.Supply.SupplyT has an Applicative instance for wrapped types that are only Applicative, but this implementation cannot be made an instance of Monad, meaning it is less powerful than the version from Control.Monad.Trans.Supply.

In general, use Control.Monad.Trans.Supply unless you're wrapping a type that has no Monad instance, in which case you can fall back to Control.Applicative.Supply.


Versions 0.1.0
Dependencies base (==4.*), mtl (>=2.1), transformers (>=0.3) [details]
License BSD3
Copyright Copyright © 2013 Merijn Verstraaten
Author Merijn Verstraaten
Maintainer Merijn Verstraaten <>
Stability Unknown
Category System
Bug tracker
Source repository head: hg clone
head: hg clone git+ssh://
Uploaded Fri Jul 5 10:36:13 UTC 2013 by MerijnVerstraaten
Distributions NixOS:0.1.0
Downloads 308 total (6 in the last 30 days)
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees