MonadIO m => MonadIO (InputT m)
MonadException m => MonadException (InputT m)

MonadIO means you have access to liftIO.  liftIO . evaluate . force $ mycode.
MonadException means that you have access to haskeline's exception catching mechanisms.

In System.Console.Haskeline.MonadException, you have the catch, catches, and handle functions which will allow you to catch IO exceptions (in combination with liftIO), and also a bracket which will just let you do arbitrary IO actions and clean up when you are done (or hit an exception).

>let mycode = undefined :: Handle -> IO ()  -- example code

runInputT _ (bracket (liftIO $ openFile "blah" ReadMode) (liftIO . hClose) (\fp -> liftIO . mycode $ fp))

Another way to use it might be

runInputT _ (liftIO $ mycode _) `catches` [Handler iohandler, Handler anotherhandler]
  where
    iohandler :: IOException -> IO ()
    iohandler e = putStrLn "got io exception" >> return ()

Exceptions are always a pain, and so are transformers, but you get used to them.

On Mon, Aug 1, 2016 at 4:06 AM, Dennis Raddle <dennis.raddle@gmail.com> wrote:
I'm looking over haskeline. It looks like I have to modify some of my code that is in the IO monad right now. I use 'evaluate' in several places, and also 'evaluate $ force', to make sure that IO exceptions are encountered where I can catch them. Can I use 'evaluate' with InputT? I'm muddled headed about what to do. I guess I would lift 'evaluate' into the inner monad? I am not sure what those words mean. How would I catch IO exceptions?

On Thu, Jul 28, 2016 at 5:35 PM, Dennis Raddle <dennis.raddle@gmail.com> wrote:
Thanks. I'll install haskeline

On Thu, Jul 28, 2016 at 5:05 PM, David McBride <toad3k@gmail.com> wrote:
You will have to use the haskeline library.  FYI that is the library that makes ghci work.

On Thu, Jul 28, 2016 at 6:09 PM, Dennis Raddle <dennis.raddle@gmail.com> wrote:
I wrote a program first in Windows, where it works as expected, and now I'm using it in OS X and getting undesired behavior. 

It reads lines from the terminal using the getLine function. In Windows (DOS, actually) the up and down arrows can be used to choose previously entered lines. However, this does not work in bash in OS X. 

What do I need to get the history available via the arrow keys?

D


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners



_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners




_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners