prologue-3.0.9: src/Prologue/Control/Monad/Primitive.hs
{-# LANGUAGE UndecidableInstances #-}
module Prologue.Control.Monad.Primitive (module Prologue.Control.Monad.Primitive, module X) where
import qualified Control.Monad.IO.Class as IOClass
import Prelude
import Prelude as X (IO)
import Control.Monad.IO.Class as X (MonadIO, liftIO)
import Control.Monad.Primitive as X (PrimMonad (PrimState, primitive), RealWorld, primitive_, PrimBase, liftPrim)
-- import qualified Control.Monad.IO.Class as IOClass
-- -- === Definitions === --
--
-- type PrimMonadST s m = (PrimMonad m, PrimState m ~ s)
-- type MonadIO m = PrimMonadST RealWorld m
--
--
-- -- === Utils === --
--
-- liftIO :: MonadIO m => IO a -> m a
-- liftIO = liftPrim ; {-# INLINE liftIO #-}
--
--
-- -- === Intances === --
--
-- instance {-# OVERLAPPABLE #-} (MonadIO m, Monad m) => IOClass.MonadIO m where
-- liftIO = liftIO ; {-# INLINE liftIO #-}