Maps an InputT to a ReaderT. Useful for lifting InputT functions into some other reader-like monad.
Examples:
import System.Console.Haskeline qualified as H
runApp :: ReaderT (InputTEnv IO) IO ()
runApp = do
input <- toReaderT (H.getInputLine "Enter your name: ")
...
-- MTL-style polymorphism
class MonadHaskeline m where
getInputLine :: String -> m (Maybe String)
-- AppT is the core type over ReaderT.
instance MonadHaskeline (AppT m) where
getInputLine = lift . toReaderT . H.getInputLine
runApp :: (MonadHaskeline m) => m ()
runApp = do
input <- getInputLine "Enter your name: "
...