# monad-control-aligned
An alternative edition of monad-control that forces all state data types to:
- be exposed at the `Constraint` level
- be aligned s.t. the state is of kind `* -> *`, wherein the subject data type is indeed the monadic value `a` in `m a`;
this opposes the `StateT` and `WriterT` definitions, whos' state types are in the form of `(a, s)`; opposing curried
type application indeed. Our edition enforces instances in the form of `(,) s` - thus leaving the last applied type polymorphic,
achieving our goal of `* -> *` _aligned_ [tm] state type.
This just allows us to use extractable-singleton to _run_ our state type - useful for obtaining the subject data while
running in a lifted context - basically exactly the same as what monad-unlift does.