[Haskell-beginners] reading lines with history from bash terminal in OS X

Dennis Raddle dennis.raddle at gmail.com
Tue Aug 2 19:24:31 UTC 2016


Thanks. I will study this.



On Mon, Aug 1, 2016 at 5:43 AM, David McBride <toad3k at gmail.com> wrote:

> 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 at 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 at gmail.com>
>> wrote:
>>
>>> Thanks. I'll install haskeline
>>>
>>> On Thu, Jul 28, 2016 at 5:05 PM, David McBride <toad3k at 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 at 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 at haskell.org
>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Beginners mailing list
>>>> Beginners at haskell.org
>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at 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/20160802/3afa66d3/attachment.html>


More information about the Beginners mailing list