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
****************************************

Reply via email to