Documentation
IxMonad (Indexed Monad) carries type-level state through a computation. For an IxMonad m, m px py a represents a computation with precondition px, postcondition py, and result value a. px and py can be thought of as type-level propositions that hold at the beginning and end of the computation.
IxCont is a continuation monad that supports changing of the answer type during the computation. The result is a functor s x, where the caller of the computation controls the type held inside the functor.