grisette-0.1.0.0: src/Grisette/Lib/Control/Monad/Trans.hs
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE Trustworthy #-}
-- |
-- Module : Grisette.Lib.Control.Monad.Trans
-- Copyright : (c) Sirui Lu 2021-2023
-- License : BSD-3-Clause (see the LICENSE file)
--
-- Maintainer : siruilu@cs.washington.edu
-- Stability : Experimental
-- Portability : GHC only
module Grisette.Lib.Control.Monad.Trans
( -- * mrg* variants for operations in "Control.Monad.Trans"
mrgLift,
)
where
import Control.Monad.Trans
import Grisette.Core.Control.Monad.Union
import Grisette.Core.Data.Class.Mergeable
import Grisette.Core.Data.Class.SimpleMergeable
-- | 'lift' with 'MergingStrategy' knowledge propagation.
mrgLift ::
forall t m a.
(MonadUnion (t m), MonadTrans t, Monad m, Mergeable a) =>
m a ->
t m a
mrgLift v = merge $ lift v
{-# INLINE mrgLift #-}