<div dir="ltr"><div><div><div><div><div><div><div><div><br></div>I'm trying to define a typeclass for the management of events. <br></div>I thought it would be "nice" if IO can be an instance of it.<br>This would allow to manage my events in IO, as a good demonstration.<br></div>However those events can fail, so I'd like to use MonadError!<br></div>IO is an instance of MonadError IOException, but IOException is not interesting for me since the events have other kind of exceptions.<br><br></div>So I see only two possibilities:<br></div>- wrap IO in a newtype, but bye-bye nice demonstration :)<br></div>- define my own error class, similar to MonadError.<br><br></div>Thanks!<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 18, 2016 at 9:12 PM, David Feuer <span dir="ltr"><<a href="mailto:david.feuer@gmail.com" target="_blank">david.feuer@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Type synonyms change nothing. I don't think your current line of<br>
questioning is going to lead anywhere useful. Could you give some more<br>
context for your original question? If you tell us what you're<br>
ultimately trying to accomplish, someone might be able to find a way<br>
to do it.<br>
<div class="HOEnZb"><div class="h5"><br>
On Mon, Jul 18, 2016 at 9:01 AM, Corentin Dupont<br>
<<a href="mailto:corentin.dupont@gmail.com">corentin.dupont@gmail.com</a>> wrote:<br>
><br>
> I could also do my own MonadError class also, no?<br>
> However this doesn't work:<br>
><br>
><br>
>  {-# LANGUAGE ConstraintKinds #-}<br>
><br>
> type EvError a = MonadError String a<br>
><br>
> class (Typeable n, Monad n, Applicative n, EvError n) => EvMgt n where ...<br>
><br>
> instance EvMgt IO where...<br>
><br>
><br>
> How can I create a new class "EvError" that inherits all the functions of<br>
> "MonadError String"?<br>
><br>
><br>
> On Fri, Jul 15, 2016 at 12:24 AM, David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>> wrote:<br>
>><br>
>> You can't do that; sorry. You can always turn a string into an IOException<br>
>> if you like. Or you could write a wrapper around IO. But MonadError has a<br>
>> functional dependency, so you can only have one error type per monad.<br>
>><br>
>><br>
>> On Jul 14, 2016 6:19 PM, "Corentin Dupont" <<a href="mailto:corentin.dupont@gmail.com">corentin.dupont@gmail.com</a>><br>
>> wrote:<br>
>><br>
>> Hello,<br>
>> IO is an instance of MonadError IOException...<br>
>> However I also need to make it an instance of MonadError String...<br>
>> Is it possible?<br>
>> I'm trying to instanciate this class:<br>
>><br>
>> class (Typeable n, Monad n, Applicative n, MonadError String n) => EvMgt n<br>
>> where ...<br>
>><br>
>> instance EvMgt IO where...<br>
>><br>
>> Any idea?<br>
>><br>
>> _______________________________________________<br>
>> Haskell-Cafe mailing list<br>
>> To (un)subscribe, modify options or view archives go to:<br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
>> Only members subscribed via the mailman list are allowed to post.<br>
>><br>
>><br>
><br>
</div></div></blockquote></div><br></div>