Some modern superscalar microprocessors provide only imprecise exceptions.
That is, they do not-guarantee to report the same exception that would be e
ncountered by a straightforward sequential execution of the program. In exc
hange, they offer increased performance or decreased chip area (which amoun
t to much the same thing).
This performance/precision tradeoff has not so far been much explored at th
e programming language level. In this paper we propose a design for impreci
se exceptions in the lazy functional programming language Haskell. We discu
ss several designs, and conclude that imprecision is essential if the langu
age is still to enjoy its current rich algebra of transformations. We sketc
h a precise semantics for the language extended with exceptions.
The paper shows how to extend Haskell with exceptions without crippling the
language or its compilers. We do not yet have enough experience of using t
he new mechanism to know whether it strikes an appropriate balance between
expressiveness' and performance.