threadBaseControlViaUnlift requires that the relevant transformer is representational in the transformed monad,which is not satisfied by abstract monad transformers. A relevant use-case for removing this restriction is for haskeline's InputT, as shown in #14.
Two plausible approaches to solve this:
- Make
BaseControl MonadTransControl-based rather than MonadBaseControl-based
- Inline the entire
MonadBaseControl dictionary into BaseControl.