It should be possible to unify the `IO` and `ST` support, and indeed expand support to other `PrimMonad` instances.