Add MonadIO instance for RWST
This commit is contained in:
parent
8561e7b656
commit
61207c13d3
@ -1,4 +1,5 @@
|
|||||||
{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses, RankNTypes, TypeFamilies #-}
|
{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, FlexibleInstances, MultiParamTypeClasses, RankNTypes, TypeFamilies #-}
|
||||||
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||||
module Language.Haskell.GhcMod.Monad (
|
module Language.Haskell.GhcMod.Monad (
|
||||||
GhcMod
|
GhcMod
|
||||||
, GhcModEnv(..)
|
, GhcModEnv(..)
|
||||||
@ -23,14 +24,16 @@ import Exception
|
|||||||
import MonadUtils
|
import MonadUtils
|
||||||
import DynFlags
|
import DynFlags
|
||||||
|
|
||||||
|
import Data.Monoid (Monoid)
|
||||||
import Data.IORef (IORef, readIORef, writeIORef, newIORef)
|
import Data.IORef (IORef, readIORef, writeIORef, newIORef)
|
||||||
|
|
||||||
import Control.Monad (liftM)
|
import Control.Monad (liftM)
|
||||||
import Control.Monad.Base (MonadBase,liftBase)
|
import Control.Monad.Base (MonadBase,liftBase)
|
||||||
--import Control.Monad.IO.Class (MonadIO)
|
--import Control.Monad.IO.Class (MonadIO)
|
||||||
import Control.Monad.Trans.RWS.Lazy (RWST,runRWST)
|
import Control.Monad.Trans.RWS.Lazy (RWST(..),runRWST)
|
||||||
import Control.Monad.Trans.Control (MonadBaseControl(..), StM, liftBaseWith
|
import Control.Monad.Trans.Control (MonadBaseControl(..), StM, liftBaseWith
|
||||||
, control, liftBaseOp, liftBaseOp_)
|
, control, liftBaseOp, liftBaseOp_)
|
||||||
|
import Control.Monad.Trans.Class (lift)
|
||||||
import Control.Monad.Reader.Class
|
import Control.Monad.Reader.Class
|
||||||
import Control.Monad.Writer.Class
|
import Control.Monad.Writer.Class
|
||||||
import Control.Monad.State.Class
|
import Control.Monad.State.Class
|
||||||
@ -58,6 +61,12 @@ newtype GhcMod a = GhcMod {
|
|||||||
MonadWriter GhcModWriter,
|
MonadWriter GhcModWriter,
|
||||||
MonadState GhcModState)
|
MonadState GhcModState)
|
||||||
|
|
||||||
|
#if __GLASGOW_HASKELL__ < 708
|
||||||
|
instance (Monoid w, MonadIO m) => MonadIO (RWST r w s m) where
|
||||||
|
-- liftIO :: MonadIO m => m -> IO m
|
||||||
|
liftIO = lift . liftIO
|
||||||
|
#endif
|
||||||
|
|
||||||
runGhcMod' :: GhcModEnv
|
runGhcMod' :: GhcModEnv
|
||||||
-> GhcModState
|
-> GhcModState
|
||||||
-> GhcMod a
|
-> GhcMod a
|
||||||
|
Loading…
Reference in New Issue
Block a user