ACM Home Page
Please provide us with feedback. Feedback
Digital Library logoTake a look at the new version of this page: [ beta version ]. Tell us what you think.
Not all patterns, but enough: an automatic verifier for partial but sufficient pattern matching
Full text PdfPdf (271 KB)
Source
Haskell archive
Proceedings of the first ACM SIGPLAN symposium on Haskell table of contents
Victoria, BC, Canada
SESSION: Session 2 table of contents
Pages: 49-60  
Year of Publication: 2008
ISBN:978-1-60558-064-7
Also published in ...
Authors
Neil Mitchell  University of York, York, United Kingdom
Colin Runciman  University of York, York, United Kingdom
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 2,   Downloads (12 Months): 67,   Citation Count: 2
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1411286.1411293
What is a DOI?

ABSTRACT

We describe an automated analysis of Haskell 98 programs to check statically that, despite the possible use of partial (or non-exhaustive) pattern matching, no pattern-match failure can occur. Our method is an iterative backward analysis using a novel form of pattern-constraint to represent sets of data values. The analysis is defined for a core first-order language to which Haskell 98 programs are reduced. Our analysis tool has been successfully applied to a range of programs, and our techniques seem to scale well. Throughout the paper, methods are represented much as we have implemented them in practice, again in Haskell.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Stephen Adams. Efficient sets - a balancing act. JFP, 3 (4): 553--561, 1993.
2
 
3
John Horton Conway. Regular Algebra and Finite Machines. London Chapman and Hall, 1971.
 
4
 
5
Dimitry Golubovsky, Neil Mitchell, and Matthew Naylor. Yhc.Core - from Haskell to Core. The Monad.Reader, 1 (7): 45--61, April 2007.
 
6
S. C. Johnson. Lint, a C program checker. Technical Report 65, Bell Laboratories, 1978.
 
7
C. Lee. Representation of switching circuits by binary decision diagrams. Bell System Technical Journal, 38: 985--999, 1959.
 
8
Tobias Lindahl and Konstantinos Sagonas. Detecting software defects in telecom applications through lightweight static analysis: A war story. In Proc. APLAS '04, LNCS 3302, pages 91--106. Springer, November 2004.
 
9
Luc Maranget. Warnings for pattern matching. JFP, 17 (3): 1--35, May 2007.
 
10
 
11
Neil Mitchell. Transformation and Analysis of Functional Programs. PhD thesis, University of York, 2008.
 
12
Neil Mitchell and Colin Runciman. A static checker for safe pattern matching in Haskell. In Trends in Functional Programming (2005 Symposium), volume 6, pages 15--30. Intellect, 2007.
 
13
 
14
 
15
Simon Peyton Jones. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.
16
17
18
19
20
 
21
The GHC Team. The GHC compiler, version 6.8.2. http://www.haskell.org/ghc/, December 2007.
 
22
Andrew Tolmach. An External Representation for the GHC Core Language. http://www.haskell.org/ghc/docs/papers/core.ps.gz, September 2001.
23
 
24
David Turner. Total Functional Programming. Journal of Universal Computer Science, 10 (7): 751--768, July 2004.
 
25
26
27
 
28
Dana N. Xu, Simon Peyton Jones, and Koen Claessen. Static contract checking for Haskell. In Proc. IFL 2007, pages 382--399, 2007.


Collaborative Colleagues:
Neil Mitchell: colleagues
Colin Runciman: colleagues