Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: exception, not in IO (Lyndon Maydwell)
----------------------------------------------------------------------
Message: 1
Date: Mon, 15 Jul 2013 11:01:48 +1000
From: Lyndon Maydwell <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] exception, not in IO
Message-ID:
<cam5qztxg0umtetqpm8kdw6bao70jobakepaqnvd7oxcsyvg...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
I agree that it seems uncomfortable for a seemingly pure function to
require handling exceptions in the IO monad, but if the code in question
really does have the capability of raising IO exceptions, then I think it
is reasonable to consider it as impure and belonging in the IO monad and
that it probably should not have been given a pure type signature to start
with. I'd double check to see if the function in question has the
capability of raising an exception in a more pure monad as per Kees's
suggestion. The other option is to perform the actions I've suggested and
then wrap the whole lot in unsafePerformIO to make it pure again but with a
new signature of (a -> Either YourException b), however that just makes me
feel even more queazy...
Other than that, I guess we'd need a snippet of the code and what libraries
are being used in order to provide better help.
Good luck!
On Mon, Jul 15, 2013 at 4:07 AM, Kees Bleijenberg <
[email protected]> wrote:
> Lyndon,****
>
> You wrote:
> You can turn anything into an IO action with return, or you could catch
> the exception at a level where you are performing IO. Would this be what
> you're after?****
>
> Wait until you perform IO, seems quit uneasy to me and why? Converting a
> string to a typeable is not a IO action. Problem is that this function
> lives in a dll. The IO is done by the calling program (not a Haskell
> program). The function is not in a monad, it is a pure function. So I think
> I can?t do a return.****
>
> Kees****
>
> On Sun, Jul 14, 2013 at 7:47 PM, Kees Bleijenberg <
> [email protected]> wrote:****
>
> The app I?am working on, converts a jsonString to another string encoding.
> ****
>
> The function I want to write is jsonString -> (encoding, errorMsg) so
> String-> (String, String) ****
>
> For this purpose I have a typeable datastructure Glass. Because it is
> typeable I can do (decodeJSON jsonString) :: Glass****
>
> But sometimes the jsonString is not valid (misformed or wrong fields).
> decodeJSON then throws a exception. I want to****
>
> catch that exection and transform the result to something like (?? ,
> theErrorMsg). Unfortunately all catch functions want IO parameters. ****
>
> What can I do?****
>
> ****
>
> Kees****
>
> ****
>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners****
>
> ** **
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20130715/cdd00065/attachment-0001.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 61, Issue 19
*****************************************