A novel representation of lists and its application to the function "reverse"
Information Processing Letters
Data structures and program transformation
Science of Computer Programming
Unboxed values as first class citizens in a non-strict functional language
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebra of programming
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
Fast and loose reasoning is morally correct
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Programming in Haskell
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Asymptotic Improvement of Computations over Free Monads
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
The worker/wrapper transformation
Journal of Functional Programming
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Fission for program comprehension
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Explicit binds: effortless efficiency with and without trees
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Kan extensions for program optimisation or: art and dan explain an old trick
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Hi-index | 0.00 |
The worker/wrapper transformation is a general technique for improving the performance of recursive programs by changing their types. The previous formalisation (A. Gill & G. Hutton, J. Funct. Program., vol. 19, 2009, pp. 227–251) was based upon a simple fixed-point semantics of recursion. In this paper, we develop a more structured approach, based upon initial-algebra semantics. In particular, we show how the worker/wrapper transformation can be applied to programs defined using the structured pattern of recursion captured by fold operators, and illustrate our new technique with a number of examples.