A novel representation of lists and its application to the function "reverse"
Information Processing Letters
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Bananas in space: extending fold and unfold to exponential types
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Term rewriting and all that
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Integrating functional and imperative programming
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Representation independence and data abstraction
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polytypic Values Possess Polykinded Types
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Categorical Fixed Point Calculus
CTCS '95 Proceedings of the 6th International Conference on Category Theory and Computer Science
Tool support for refactoring functional programs
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Path, a program transformation system for haskell
Path, a program transformation system for haskell
Parametric polymorphism and operational equivalence
Mathematical Structures in Computer Science
Finger trees: a simple general-purpose data structure
Journal of Functional Programming
An update calculus for expressing type-safe program updates
Science of Computer Programming
Journal of Functional Programming
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
The worker/wrapper transformation
Journal of Functional Programming
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A theory of typed coercions and its applications
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A survey of strategies in rule-based program transformation systems
Journal of Symbolic Computation
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Stream fusion on haskell unicode strings
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
Pull-ups, push-downs, and passing it around
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
The HERMIT in the machine: a plugin for the interactive transformation of GHC core language programs
Proceedings of the 2012 Haskell Symposium
Hi-index | 0.00 |
We have identified a class of regular, whole-program transformations that cannot be safely performed with typical transformation techniques because transformation requires changing the types of terms. In these transformations, we want to change typically large parts of a program from using one type to using another type while simultaneously preserving the original program semantics after transformation. In this paper, we present type-and-transform systems, an automated approach to the whole-program transformation of terms involving type A to terms involving the isomorphic type B using type-changing rewrite rules. Type-and-transform systems establish typing and semantics relations between all source and target subprograms such that a complete transformation can guarantee the equivalent semantics of a whole program. We describe the type-and-transform system for the lambda calculus with let-polymorphism and general recursion, including several examples from the literature and properties of the system.