[Haskell-cafe] Array bug?

Henning Thielemann lemming at henning-thielemann.de
Mon Nov 3 16:05:34 EST 2008


On Mon, 3 Nov 2008, Svein Ove Aas wrote:

> On Mon, Nov 3, 2008 at 4:55 PM, Henning Thielemann
>>
>> I think it is a good idea to switch this feature on and off by a compiler
>> switch. It does not alter the correctness of a program. If the program is
>> incorrect, the switch does only affect the way how the program goes wrong.
>>
>
> I disagree.
> In a normal program, you may want to mix the two - use the safe
> functions for untrusted input, the unsafe ones once you have already
> validated the input.
>
> Such a switch, if it existed, should only affect the *unsafe* version
> of the call - this way, it would be possible to remove all chance of
> corruption from a program at need.
>
> Also, of course, the exceptions should be catchable based on the new
> ghc 6.10 exception library (on ghc 6.10, anyhow)

I think you mix up errors and exceptions:
   http://www.haskell.org/haskellwiki/Exception
   http://www.haskell.org/haskellwiki/Error

If you read untrusted data and encounter an index out of range, then you 
must throw an exception (or return an "exception code"). The internal 
array bound checking must be active though, since your code that checks 
the untrusted data may be buggy. The internal array bound checking is 
entirely intended for revealing buggy code, not for validating untrusted 
data. That is, for debugging you turn the bound checking on and if you are 
sure it is exhaustively tested, then you can turn it off for maximum 
efficiency.

You may want to give
   http://hackage.haskell.org/cgi-bin/hackage-scripts/package/explicit-exception
  a try.


More information about the Haskell-Cafe mailing list