This package provides the ability to join up or wire instances of types (such as ReaderT, WriterT and RWST) with some semi-automatic conversions.
ReaderT Example
With ReaderT there might be two functions already written that we wish to compose:
Ordinarily these could not be used together because their environment type differs,
which reduces the utility of ReaderT as a method of dependency injection.
However with use of the wire method from the Wirable typeclass it becomes possible to use these two together with little pain.
Tuples
Built in are instances of Wirable for transforming tuples to their individual fields, like taking a from a tuple (a, b, c).
As well as producing new tuples from existing tuples, starting with a tuple of (a, b, c) and returning a tuple of (c, a).
Other Types
WriterT and RWST are similarly well supported, including the ability to promote from ReaderT/WriterT up to RWST.
Some existing functionality is extended like for instance with the wiredAsk and wiredTell functions.