Agda-2.2.2: src/full/Agda/Interaction/Monad.hs
module Agda.Interaction.Monad where
import Agda.TypeChecking.Monad
import Control.Monad.Trans
import System.Console.Haskeline
-- | Interaction monad.
type IM = TCMT (InputT IO)
-- | Line reader. The line reader history is not stored between
-- sessions.
readline :: String -> IM (Maybe String)
readline s = lift (getInputLine s)
{-
data CurrentPoint = InInteractionPoint InteractionId | TopLevel
newtype IM a = IM {unIM :: StateT [CurrentPoint] TCM a}
deriving (Monad,MonadIO)
instance MonadError e IM where
throwError = lift . throwError
catchError m h = IM $ catchError (unIM m) (unIM . h)
instance MonadUndo [CurrentPoint] IM where
undo =
run
-}
-- instance MonadTCM IM where
-- liftTCM = id
runIM :: IM a -> TCM a
runIM = mapTCMT (runInputT defaultSettings)