Modular Tree Automata

Tree automata are traditionally used to study properties of tree languages and tree transformations. In this paper, we consider tree automata as the basis for modular and extensible recursion schemes. We show, using well-known techniques, how to derive from standard tree automata highly modular recursion schemes. Functions that are defined in terms of these recursion schemes can be combined, reused and transformed in many ways. This flexibility facilitates the specification of complex transformations in a concise manner, which is illustrated with a number of examples.

[1]  Simon L. Peyton Jones,et al.  Scrap your boilerplate with class: extensible generic functions , 2005, ICFP '05.

[2]  Tom Schrijvers,et al.  Functional and Logic Programming , 2012, Lecture Notes in Computer Science.

[3]  Graham Hutton,et al.  Towards Modular Compilers for Effects , 2011, Trends in Functional Programming.

[4]  Bart Jacobs,et al.  Categorical views on computations on trees , 2007 .

[5]  Simon Marlow,et al.  Haskell 2010 Language Report , 2010 .

[6]  Johan Jeuring,et al.  Generic programming with fixed points for mutually recursive datatypes , 2009, ICFP.

[7]  Bart Jacobs,et al.  Categorical Views on Computations on Trees (Extended Abstract) , 2007, ICALP.

[8]  Jeremy Gibbons Generic downwards accumulations , 2000, Sci. Comput. Program..

[9]  Zoltán Fülöp,et al.  Syntax-Directed Semantics , 1998, Monographs in Theoretical Computer Science An EATCS Series.

[10]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[11]  Bruno C. d. S. Oliveira,et al.  "Scrap Your Boilerplate" Reloaded , 2006, FLOPS.

[12]  Ralf Lämmel,et al.  Strongly typed heterogeneous collections , 2004, Haskell '04.

[13]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[14]  Wouter Swierstra,et al.  Data types à la carte , 2008, Journal of Functional Programming.

[15]  Jeremy Gibbons Polytypic Downwards Accumulations , 1998, MPC.

[16]  Jukka Paakki,et al.  Attribute grammar paradigms—a high-level methodology in language implementation , 1995, CSUR.

[17]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

[18]  James Cheney Scrap your nameplate: (functional pearl) , 2005, ICFP '05.

[19]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[20]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[21]  Tony Burgess,et al.  The Language Report , 1974 .

[22]  Hubert Comon,et al.  Tree automata techniques and applications , 1997 .

[23]  Ralf Hinze,et al.  "Scrap Your Boilerplate" Revolutions , 2006, MPC.

[24]  S. Doaitse Swierstra,et al.  Attribute grammars fly first-class: how to do aspect oriented programming in Haskell , 2009, ICFP.

[25]  Maarten M. Fokkinga,et al.  Law and order in algorithmics , 1992 .

[26]  Colin Runciman,et al.  Uniform boilerplate and list processing , 2007, Haskell '07.

[27]  Zoltán Fülöp,et al.  Syntax-Directed Semantics: Formal Models Based on Tree Transducers , 2011 .

[28]  Janis Voigtländer,et al.  Formal Efficiency Analysis for Tree Transducer Composition , 2007, Theory of Computing Systems.

[29]  Jeremy Gibbons Upwards and Downwards Accumulations on Trees , 1992, MPC.

[30]  Simon L. Peyton Jones,et al.  Scrap Your Boilerplate , 2003, APLAS.

[31]  Jesse B. Wright,et al.  Automata in General Algebras , 1967, Inf. Control..

[32]  Armin Kühnemann,et al.  Benefits of Tree Transducers for Optimizing Functional Programs , 1998, FSTTCS.

[33]  PaakkiJukka Attribute grammar paradigmsa high-level methodology in language implementation , 1995 .

[34]  Patrick Bahr,et al.  Compositional data types , 2011, WGP@ICFP.