Give MonadTrans a QuantifiedConstraints superclass
Baldur Blöndal
baldurpet at gmail.com
Wed Jun 2 06:52:47 UTC 2021
This is to advertise the proposal
(https://gitlab.haskell.org/ghc/ghc/-/issues/19922) to add a
superclass to the MonadTrans type class in Control.Monad.Trans.
A Monad transformer 'trans' lifts a 'Monad m' to a 'Monad (trans m)'.
This proposal code-ifies that with a superclass constraint:
class (forall m. Monad m => Monad (trans m)) => MonadTrans trans where
..
This is the main motiviating example of the Quantified Class
Constraints paper https://gkaracha.github.io/papers/quantcs.pdf
Without it composition (·) as described in the paper can't be defined.
Uses include deriving MonadTrans via the composition of two
MonadTransformers:
type Ok :: MonadTransformer
newtype Ok m a = Ok (Int -> Int -> m a)
deriving (Functor, Applicative, Monad)
via (ReaderT Int · ReaderT Int) m
:: Type -> Type
deriving MonadTrans
via ReaderT Int · ReaderT Int
:: MonadTransformer
More information about the Libraries
mailing list