-- | Laws for 'MonadTrans'. {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Test.Monad.Trans where import Control.Monad.Trans import Test.QuickCheck.HigherOrder (Equation(..)) import Test.Monad.Morph lift_return :: forall t m a . (MonadTrans t, Monad m, Monad (t m)) => a -> Equation (t m a) lift_return = returnHom @_ @(t m) lift lift_bind :: forall t m a b . (MonadTrans t, Monad m, Monad (t m)) => m a -> (a -> m b) -> Equation (t m b) lift_bind = bindHom @_ @(t m) lift