[Haskell-cafe] Errors in non-monadic code
jabolopes at google.com
jabolopes at google.com
Mon Aug 19 20:20:23 CEST 2013
Yeah, non-monadic is not the best term... The problem is that it's
always so hard to communicate when you want to say a total function
that is not in the context of the IO monad. There should be a simple,
short name for these functions, so we can easily talk about them.
What ends up happening a lot of the times is that people on the
mailing list call these "pure" functions, and immediately they get an
email saying that Haskell is pure, so everything is a pure
function. In the end, it doesn't really help...
Jose
On Mon, Aug 19, 2013 at 10:09:13PM +0400, Daniel F wrote:
> On Mon, Aug 19, 2013 at 9:48 PM, <jabolopes at google.com> wrote:
>
> > Hi,
> >
> >
> Hello!
>
>
> > What is the proper way to implement a non-monadic function that checks
> > whether a given value is correct and gives a proper error message
> > otherwise ? What is the recommended option ?
> >
>
> I am not sure, what do you mean by non-monadic. Both (Either String) and
> Maybe are monads.
>
> You can pick up whatever option you like, depending on which option, in
> your opinion, suits you better for your specific case.
> There is also a helpful errors [1] package that provide convenient means of
> converting between the results of the two approaches.
>
> Control.Error.Util.hush :: Either a b -> Maybe b
> Control.Error.Util.note :: a -> Maybe b -> Either a b
>
>
> > * Either String a
> >
> > check val
> > | valid val = Right val
> > | otherwise = Left errorMsg
> >
> >
> > * Maybe String
> >
> > check val
> > | valid val = Nothing
> > | otherwise = Just errorMsg
> >
> >
> > Cheers,
> > Jose
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>
> [1] http://hackage.haskell.org/package/errors
>
> --
> Sincerely yours,
> -- Daniil
More information about the Haskell-Cafe
mailing list