[Haskell-beginners] How to test "error"?

Hilco Wijbenga hilco.wijbenga at gmail.com
Wed Jun 12 05:24:09 UTC 2019


No, I don't think you should use Either/Maybe to anticipate bugs. If
your code could _legitimately_ fail (it's just something that follows
from your domain) then Maybe/Either are appropriate. Otherwise, some
sort of exception or "error" is more appropriate. E.g., if your domain
knowledge tells you that zeroes are impossible then you would not want
every division to return a Maybe just because division by zero is not
defined. _Because that should never happen._

On Tue, Jun 11, 2019 at 12:44 AM Michele Alzetta
<michele.alzetta at gmail.com> wrote:
>
> As beginner to beginner, so take this with a kg of salt  ... isn't what you're looking for a construction of the Either sort?
>
> That way you get Right and Left and you can check for Left.
>
>
>
>
>
> Il giorno mar 11 giu 2019 alle ore 05:45 Hilco Wijbenga <hilco.wijbenga at gmail.com> ha scritto:
>>
>> Hi all,
>>
>> I have a function that may call "error" if the input represents a bug
>> in my program. (Think something like PositiveInt -1; this should never
>> happen so Maybe or Either are not applicable.)
>>
>> f :: Whatever
>> f = error "This should never happen."
>>
>> spec :: Spec
>> spec =
>>     describe "f" $
>>         it "error" $
>>             return f `shouldThrow` anyErrorCall
>>
>> The above does not work, I get "did not get expected exception:
>> ErrorCall". Using "anyException" doesn't work either.
>>
>> How can I write a test for this? And (assuming I can get the test to
>> work), how do I check that the error message is indeed what I expect?
>>
>> Cheers,
>> Hilco
>> _______________________________________________
>> 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


More information about the Beginners mailing list