[Haskell-cafe] Errors in non-monadic code
Brandon Allbery
allbery.b at gmail.com
Mon Aug 19 20:09:17 CEST 2013
On Mon, Aug 19, 2013 at 1:48 PM, <jabolopes at google.com> wrote:
> 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 ?
>
> * Either String a
>
Preferred, usually, since Nothing is regarded as an error condition of
sorts: the Monad instance for Maybe associates Nothing with `fail`, which
is invoked on failed pattern matches; likewise it's mzero for MonadPlus and
mempty for Monoid, both of which use it (differently) to reflect certain
"failure" scenarios).
If nothing else, it would be highly confusing to see Nothing associated
with success given its widespread association with failure.
Alternatively, have you considered using your own ADT? `data Validity =
Success | Failure String` would give you more readable / comprehensible
code without needing to worry about assumptions or common usage.
--
brandon s allbery kf8nh sine nomine associates
allbery.b at gmail.com ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130819/7fd38e59/attachment.htm>
More information about the Haskell-Cafe
mailing list