ACM Computing Surveys (CSUR)
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A new approach to compiling adaptive programs
Science of Computer Programming
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
A new approach to generic functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principles of Program Analysis
Principles of Program Analysis
Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Strategic programming meets adaptive programming
Proceedings of the 2nd international conference on Aspect-oriented software development
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Strafunski Application Letter
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
Generation of Components for Software Renovation Factories from Context-free Grammars
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
Term rewriting with traversal functions
ACM Transactions on Software Engineering and Methodology (TOSEM)
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Traversals of object structures: Specification and Efficient Implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM SIGPLAN Notices
Static analysis of XSLT programs
ADC '04 Proceedings of the 15th Australasian database conference - Volume 27
Scrap more boilerplate: reflection, zips, and generalised casts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
The transient combinator, higher-order strategies, and the distributed data problem
Science of Computer Programming - Special issue on program transformation
Scrap your boilerplate with class: extensible generic functions
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Stratego/XT 0.16: components for transformation systems
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
The TXL source transformation language
Science of Computer Programming - The fourth workshop on language descriptions, tools, and applications (LDTA'04)
A generic recursion toolbox for Haskell or: scrap your boilerplate systematically
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
An extensible dynamically-typed hierarchy of exceptions
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Scrap++: scrap your boilerplate in C++
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Scrap your boilerplate with XPath-like combinators
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical type inference for arbitrary-rank types
Journal of Functional Programming
A transformational perspective into the core of an abstract class loader for the SSP
ACM Transactions on Embedded Computing Systems (TECS)
Transformation of structure-shy programs: applied to XPath queries and strategic functions
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Efficient static analysis of XML paths and types
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Uniform boilerplate and list processing
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Semantics with Applications: An Appetizer (Undergraduate Topics in Computer Science)
Semantics with Applications: An Appetizer (Undergraduate Topics in Computer Science)
Recursive adaptive computations using perobject visitors
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
HMF: simple type inference for first-class polymorphism
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Comparing libraries for generic programming in haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
Electronic Notes in Theoretical Computer Science (ENTCS)
Termination of rewriting under strategies
ACM Transactions on Computational Logic (TOCL)
Static contract checking for Haskell
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Type-based termination of generic programs
Science of Computer Programming
RTA '09 Proceedings of the 20th International Conference on Rewriting Techniques and Applications
An Isabelle/HOL-based model of stratego-like traversal strategies
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
A Brief Overview of Agda --- A Functional Language with Dependent Types
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
The Haskell Refactorer, HaRe, and its API
Electronic Notes in Theoretical Computer Science (ENTCS)
Tom: piggybacking rewriting on java
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
Eliminating dead-code from XQuery programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Termination analysis of higher-order functional programs
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
The essence of data access in Cω: the power is in the dot!
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Automated termination analysis for Haskell: from term rewriting to programming languages
RTA'06 Proceedings of the 17th international conference on Term Rewriting and Applications
Program transformation using HATS 1.84
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
“Scrap your boilerplate” revolutions
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Specification of rewriting strategies
Algebraic'97 Proceedings of the 2nd international conference on Theory and Practice of Algebraic Specifications
Hi-index | 0.00 |
Traversal strategies a la Stratego (also a la Strafunski and 'Scrap Your Boilerplate') provide an exceptionally versatile and uniform means of querying and transforming deeply nested and heterogeneously structured data including terms in functional programming and rewriting, objects in OO programming, and XML documents in XML programming. However, the resulting traversal programs are prone to programming errors. We are specifically concerned with errors that go beyond conservative type errors; examples we examine include divergent traversals, prematurely terminated traversals, and traversals with dead code. Based on an inventory of possible programming errors we explore options of static typing and static analysis so that some categories of errors can be avoided. This exploration generates suggestions for improvements to strategy libraries as well as their underlying programming languages. Haskell is used for illustrations and specifications with sufficient explanations to make the presentation comprehensible to the non-specialist. The overall ideas are language-agnostic and they are summarized accordingly.