Static type inference in a dynamically typed language
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards static type checking for XSLT
DocEng '01 Proceedings of the 2001 ACM Symposium on Document engineering
TCS '02 Proceedings of the IFIP 17th World Computer Congress - TC1 Stream / 2nd IFIP International Conference on Theoretical Computer Science: Foundations of Information Technology in the Era of Networking and Mobile Computing
The nofib Benchmark Suite of Haskell Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Journal of Functional Programming
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Darcs: distributed version management in haskell
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Extended static checking for haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Finding Inputs that Reach a Target Expression
SCAM '07 Proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation
Static contract checking for Haskell
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Losing functions without gaining data: another look at defunctionalisation
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
High coverage testing of Haskell programs
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Explicitly typed exceptions for haskell
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Static type analysis of pattern matching by abstract interpretation
FMOODS'10/FORTE'10 Proceedings of the 12th IFIP WG 6.1 international conference and 30th IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems
xmonad in Coq (experience report): programming a window manager in a proof assistant
Proceedings of the 2012 Haskell Symposium
A traversal-based algorithm for higher-order model checking
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
HALO: haskell to logic through denotational semantics
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
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.