[Haskell-cafe] Track Exceptions

Ruud Koot r.koot at uu.nl
Thu Mar 13 16:45:12 UTC 2014


In theory, yes, but the situation becomes more complicated for
higher-order languages such as Haskell than it is for first-order(ish)
languages such as Java.*

1) Consider the higher-order function 'map'. With tracked exceptions
you would probably want to give it a type such as:

    map :: forall a b e. (a -> b throws e) -> [a] -> [b] throws e

I.e., you need some kind of exception polymorphism, or severely
restrict the kind of functions you would be allowed to pass to map
(basically those that are guaranteed to not raise any exceptions).

2) One of the most commonly encountered run-time exception in Haskell
is a pattern-match failure. Whether or not these are triggered depends
not only on the control flow within your program, but also on the data
flow, making them harder to track.

Some relevant references would be:

- Kevin Glynn, Peter J. Stuckey, Martin Sulzmann & Harald Søndergaard.
"Exception analysis for non-strict languages". ICFP '02.
http://dl.acm.org/citation.cfm?id=581488
- Ruud Koot & Jurriaan Hage. "Type-based exception analysis for
higher-order non-strict languages with imprecise exception semantics".
Submitted to ICFP '14.
http://www.staff.science.uu.nl/~0422819/tbea/icfp14.pdf


Ruud



* Technically, object-oriented languages are also higher-order
languages and one can find examples where the lack of exception
polymorphism can cause trouble for Java's tracked exception mechanism.

On Thu, Mar 13, 2014 at 5:15 PM, Silvio Frischknecht
<silvio.frischi at gmail.com> wrote:
> Hi everyone,
>
> It's always very annoying not knowing what could go wrong (what exceptions
> might be thrown) when calling a library function. In java doc, for instance,
> you can usually see what exceptions can be thrown by a specific function. I was
> wondering if this could be achieved for haskell by tracing "throw" and "catch"
> calls.
>
> Silvio
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list