First-class patterns

Pure pattern calculus supports pattern-matching functions in which patterns are first-class citizens that can be passed as parameters, evaluated and returned as results. This new expressive power supports two new forms of polymorphism. Path polymorphism allows recursive functions to traverse arbitrary data structures. Pattern polymorphism allows patterns to be treated as parameters which may be collected from various sources or generated from training data. A general framework for pattern calculi is developed. It supports a proof of confluence that is parameterised by the nature of the matching algorithm, suitable for the pure pattern calculus and all other known pattern calculi.

[1]  David B. Skillicorn,et al.  Adaptiveness in well-typed Java bytecode verification , 2006, CASCON.

[2]  Delia Kesner,et al.  Pure Pattern Calculus , 2006, ESOP.

[3]  Chang Liu,et al.  Term rewriting and all that , 2000, SOEN.

[4]  Delia Kesner,et al.  Patterns as first-class citizens , 2006 .

[5]  Claude Kirchner,et al.  The rewriting calculus - Part I , 2001, Log. J. IGPL.

[6]  Claude Kirchner,et al.  Pure patterns type systems , 2003, POPL '03.

[7]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[8]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[9]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[10]  Mike Bauer,et al.  Proceedings of the 2001 conference of the Centre for Advanced Studies on Collaborative Research, November 5-7, 2001, Toronto, Ontario, Canada , 2001, CASCON.

[11]  Frank Pfenning,et al.  Inductively Defined Types in the Calculus of Constructions , 1989, Mathematical Foundations of Programming Semantics.

[12]  Lawrence Charles Paulson,et al.  Isabelle: A Generic Theorem Prover , 1994 .

[13]  Corrado Böhm,et al.  Lambda-Definition of Function(al)s by Normal Forms , 1994, ESOP.

[14]  C. Barry Jay,et al.  The pattern calculus , 2004, TOPL.

[15]  D. B. Skillicorn,et al.  Dealing with Complex Patterns in XML Processing , 2005 .

[16]  Daniele Gorla,et al.  Resource Access and Mobility Control with Dynamic Privileges Acquisition , 2003, ICALP.

[17]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[18]  Simon Peyton Jones,et al.  The Implementation of Functional Programming Languages (Prentice-hall International Series in Computer Science) , 1987 .

[19]  Simon L. Peyton Jones,et al.  Scrap your boilerplate: a practical design pattern for generic programming , 2003, TLDI '03.

[20]  C. B. Jay,et al.  Dealing with Complex Patterns in XML Processing , 2005 .

[21]  Wolfram Kahl,et al.  Basic Pattern Matching Calculi: a Fresh View on Matching Failure , 2004, FLOPS.

[22]  Vincent van Oostrom,et al.  Lambda calculus with patterns , 2008, Theor. Comput. Sci..

[23]  Delia Kesner,et al.  Expression Reduction Systems with Patterns , 2003, RTA.

[24]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

[25]  David B. Skillicorn,et al.  Programming with heterogeneous structures: manipulating XML data using bondi , 2006, ACSC.

[26]  Barry Jay Pattern Calculus - Computing with Functions and Structures , 2009 .

[27]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[28]  David A. Schmidt,et al.  Proceedings of the international conference on Mathematical foundations of programming semantics , 1985 .

[29]  Rocco De Nicola,et al.  KLAIM: A Kernel Language for Agents Interaction and Mobility , 1998, IEEE Trans. Software Eng..