Not all patterns, but enough

Neil Mitchell, Colin Runciman
2008 Proceedings of the first ACM SIGPLAN symposium on Haskell - Haskell '08  
We describe an automated analysis of Haskell 98 programs to check statically that, despite the possible use of partial (or nonexhaustive) 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
more » ... seem to scale well. Throughout the paper, methods are represented much as we have implemented them in practice, again in Haskell.
doi:10.1145/1411286.1411293 dblp:conf/haskell/MitchellR08 fatcat:x6sm5wzzorhbbjlua3eo2wfwhi