Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: reading lines with history from bash terminal in OS X (David McBride) ---------------------------------------------------------------------- Message: 1 Date: Mon, 1 Aug 2016 08:43:14 -0400 From: David McBride <toa...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] reading lines with history from bash terminal in OS X Message-ID: <CAN+Tr400HAgZmjAKcp=4_9jwdmvv3g0rqpmze1_mcqj5rbi...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" 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.rad...@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.rad...@gmail.com> > wrote: > >> Thanks. I'll install haskeline >> >> On Thu, Jul 28, 2016 at 5:05 PM, David McBride <toa...@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.rad...@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 > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160801/e9dd928f/attachment-0001.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 98, Issue 2 ****************************************