[Haskell] ANN: Catch (first ever release)

haskell at list.mightyreason.com haskell at list.mightyreason.com
Fri Jun 8 10:20:47 EDT 2007


Neil Mitchell wrote:
> Hi,
> 
> Do you sometimes encounter the dreaded "pattern match failure: head
> []" message? Do you have incomplete patterns which sometimes fail? Do
> you have incomplete patterns which you know don't fail, but still get
> compiler warnings about them? Would you like to statically ensure the
> absence of all calls to error?
> 
> For the last few years I've been working on a pattern-match checker
> for Haskell, named Catch. I'm now happy to make a release:
> 
> Hackage:
> http://hackage.haskell.org/cgi-bin/hackage-scripts/package/catch-0.1
> Homepage: http://www-users.cs.york.ac.uk/~ndm/catch/
> User manual: http://www.cs.york.ac.uk/fp/darcs/catch/catch.htm
> 
> While a darcs version is available, I strongly recommend the use of
> the tarball on hackage.
> 
> Features:
> 
> * Detects all incomplete patterns and calls to error
> * Full support for Haskell, through the use of Yhc as a front end
> * Automatic - no annotations are required
> * Fast - checking times of under 5 seconds (excluding Yhc compilation)
> are typical
> 
> Drawbacks:
> 
> * Requires Yhc to be installed, which doesn't accept most Haskell
> extensions. This will be fixed once GHC.Core is available as a
> standalone library. The underlying tool is not limited to Haskell 98
> in any way.
> 
> Success stories:
> 
> * The darcs version of HsColour has been proven free of pattern match
> errors, and Catch was able to find three previously unknown crashes
> which could be triggered by a malformed document.
> * System.FilePath has been checked, and is free of pattern-match errors
> * XMonad's central StackSet.hs module has been checked repeatedly, as
> it has evolved. Unfortunately currently this module goes beyond
> Haskell 98, but this should be fixed shortly.
> 
> If you have any experiences with Catch, I'd be very interested to hear
> them.
> 
> Thanks
> 
> Neil


I would love to use this with regex-tdfa (and the other regex-* modules).

At the moment regex-tdfa is uses a few extensions such as recursive "mdo"
notation and parts hook up to the MPTC + fundeps used in regex-base.  The
MPTC+fundeps are not part of the workhorse modules, they are just "type class
syntactic sugar" that makes it easier for the library consumer.  But "mdo" _is_
used in two of the important internal functions.

-- 
Chris


More information about the Haskell mailing list