Algebra of programming
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Haskell and XML: generic combinators or type-based translation?
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
Communications of the ACM
Visitor combination and traversal control
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
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
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
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
Stratego: A Language for Program Transformation Based on Rewriting Strategies
RTA '01 Proceedings of the 12th International Conference on Rewriting Techniques and Applications
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Traversals of object structures: Specification and Efficient Implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Query optimization in XML structured-document databases
The VLDB Journal — The International Journal on Very Large Data Bases
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
RepLib: a library for derivable type classes
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Strong types for relational databases
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Scrap your boilerplate with XPath-like combinators
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Point-free Program Transformation
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Strongly Typed Rewriting For Coupled Software Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Coupled Transformation of Schemas, Documents, Queries, and Constraints
Electronic Notes in Theoretical Computer Science (ENTCS)
XML Path Language (XPath) 2.0 Standard
XML Path Language (XPath) 2.0 Standard
Improved fusion for optimizing generics
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Type-safe two-level data transformation
FM'06 Proceedings of the 14th international conference on Formal Methods
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
A framework for point-free program transformation
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Calculating with lenses: optimising bidirectional transformations
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Multifocal: a strategic bidirectional transformation language for XML schemas
ICMT'12 Proceedings of the 5th international conference on Theory and Practice of Model Transformations
Relations as executable specifications: taming partiality and non-determinism using invariants
RAMiCS'12 Proceedings of the 13th international conference on Relational and Algebraic Methods in Computer Science
Hi-index | 0.00 |
Various programming languages allow the construction of structure-shy programs. Such programs are defined generically for many different datatypes and only specify specific behavior for a few relevant subtypes. Typical examples are XML query languages that allow selection of subdocuments without exhaustively specifying intermediate element tags. Other examples are languages and libraries for polytypic or strategic functional programming and for adaptive object-oriented programming. In this paper, we present an algebraic approach to transformation of declarative structure-shy programs, in particular for strategic functions and XML queries. We formulate a rich set of algebraic laws, not just for transformation of structure-shy programs, but also for their conversion into structure-sensitive programs and vice versa. We show how subsets of these laws can be used to construct effective rewrite systems for specialization, generalization, and optimization of structure-shy programs. We present a type-safe encoding of these rewrite systems in Haskell which itself uses strategic functional programming techniques. We discuss the application of these rewrite systems for XPath query optimization and for query migration in the context of schema evolution.