@@ -19,6 +19,7 @@ module Control.Effect.Readline
1919import Prelude hiding (print )
2020
2121import Control.Effect.Carrier
22+ import Control.Effect.Lift
2223import Control.Effect.Reader
2324import Control.Monad
2425import Control.Monad.IO.Class
@@ -58,15 +59,15 @@ newtype Line = Line Int64
5859increment :: Line -> Line
5960increment (Line n) = Line (n + 1 )
6061
61- newtype ReadlineC m a = ReadlineC { runReadlineC :: ReaderC Line (TransC InputT m ) a }
62+ newtype ReadlineC m a = ReadlineC { runReadlineC :: ReaderC Line (LiftC ( InputT m ) ) a }
6263 deriving newtype (Applicative , Functor , Monad , MonadIO )
6364
6465runReadline :: MonadException m => Prefs -> Settings m -> ReadlineC m a -> m a
65- runReadline prefs settings = runInputTWithPrefs prefs settings . runTransC . runReader (Line 0 ) . runReadlineC
66+ runReadline prefs settings = runInputTWithPrefs prefs settings . runM . runReader (Line 0 ) . runReadlineC
6667
67- instance (Carrier sig m , Effect sig , MonadException m , MonadIO m ) => Carrier (Readline :+: sig ) (ReadlineC m ) where
68+ instance (MonadException m , MonadIO m ) => Carrier (Readline :+: Lift ( InputT m ) ) (ReadlineC m ) where
6869 eff (L (Prompt prompt k)) = ReadlineC $ do
69- str <- lift (TransC (getInputLine (cyan <> prompt <> plain)))
70+ str <- lift (lift (getInputLine (cyan <> prompt <> plain)))
7071 local increment (runReadlineC (k str))
7172 where cyan = " \ESC [1;36m\STX "
7273 plain = " \ESC [0m\STX "
0 commit comments