
On Sun, 11 Mar 2012, Brandon Allbery wrote:
Is looking up a missing key in a Map an exception?
It is certainly an exceptional situation. You want to know the value that is associated with a key, but the answer is not the wanted value, but no value at all.
That is exactly this case ("variable" is really only an appropriate term from the standpoint of the shell, which [sometimes inappropriately] conflates the environment with its own variables). Or are you arguing that that also should be an exception?
"exception" in what sense? Certainly not an exception in IO, since I do not like the implicitness of exceptions in IO. No I think, Maybe is a perfect return type for 'lookup'. What I want to say is, that Nothing is also an exceptional value. A different question is, how to cope with that value. Abort a sequence of computations? This can be easily done in the Maybe monad and looks more like conventional exception handling. Do an alternative computation? This could be done using 'case' or 'maybe'. The good thing about Haskell is, that if exceptions would be consistently handled by types like Maybe, MaybeT, ExceptionalT etc. then we could really simply choose between different ways of coping with exceptional values.