Remember Me
Or use your Academic/Social account:


Or use your Academic/Social account:


You have just completed your registration at OpenAire.

Before you can login to the site, you will need to activate your account. An e-mail will be sent to you with the proper instructions.


Please note that this site is currently undergoing Beta testing.
Any new content you create is not guaranteed to be present to the final version of the site upon release.

Thank you for your patience,
OpenAire Dev Team.

Close This Message


Verify Password:
Verify E-mail:
*All Fields Are Required.
Please Verify You Are Human:
fbtwitterlinkedinvimeoflicker grey 14rssslideshare1
Sculthorpe, N; Hutton, G (2014)
Publisher: Cambridge University Press
Languages: English
Types: Article

Classified by OpenAIRE into

The worker/wrapper transformation is a general-purpose technique for refactoring recursive programs to improve their performance. The two previous approaches to formalising the technique were based upon different recursion operators and different correctness conditions. In this article we show how these two approaches can be generalised in a uniform manner by combining their correctness conditions, extend the theory with new conditions that are both necessary and sufficient to ensure the correctness of the worker/wrapper technique, and explore the benefits that result. All the proofs have been mechanically verified using the Agda system.
  • The results below are discovered through our pilot algorithms. Let us know how we are doing!

    • Backhouse, Roland. (2002). Galois Connections and Fixed Point Calculus. Pages 89-150 of: Algebraic and Coalgebraic Methods in the Mathematics of Program Construction. Springer.
    • Bird, Richard, & de Moor, Oege. (1997). Algebra of Programming. Prentice Hall.
    • Burstall, Rod. M., & Darlington, John. (1977). A Transformation System for Developing Recursive Programs. Journal of the ACM, 24(1), 44-67.
    • Farmer, Andrew, Gill, Andy, Komp, Ed, & Sculthorpe, Neil. (2012). The HERMIT in the Machine: A Plugin for the Interactive Transformation of GHC Core Language Programs. Pages 1-12 of: Haskell Symposium. ACM.
    • Gammie, Peter. (2011). Strict Unwraps Make Worker/Wrapper Fusion Totally Correct. Journal of Functional Programming, 21(2), 209-213.
    • Gill, Andy, & Hutton, Graham. (2009). The Worker/Wrapper Transformation. Journal of Functional Programming, 19(2), 227-251.
    • Hoare, Tony. (1972). Proof of Correctness of Data Representations. Acta Informatica, 1(4), 271-281.
    • Hutton, Graham, Jaskelioff, Mauro, & Gill, Andy. (2010). Factorising Folds for Faster Functions. Journal of Functional Programming, 20(3&4), 353-373.
    • Meijer, Erik, Fokkinga, Maarten M., & Paterson, Ross. (1991). Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. Pages 124-144 of: Functional Programming Languages and Computer Architecture. Springer.
    • Morgan, Carroll, & Gardiner, P. H. B. (1990). Data Refinement by Calculation. Acta Informatica, 27(6), 481-503.
    • Peyton Jones, Simon, & Launchbury, John. (1991). Unboxed Values as First Class Citizens in a Non-Strict Functional Language. Pages 636-666 of: Functional Programming Languages and Computer Architecture. Springer.
    • Scherlis, William Louis. (1980). Expression Procedures and Program Derivation. Ph.D. thesis, Stanford University.
    • Schmidt, David A. (1986). Denotational Semantics: A Methodology for Language Development. Allyn and Bacon.
    • Sculthorpe, Neil, Farmer, Andrew, & Gill, Andy. (2013). The HERMIT in the Tree: Mechanizing Program Transformations in the GHC Core Language. Pages 86-103 of: Implementation and Application of Functional Languages 2012. Lecture Notes in Computer Science, vol. 8241. Springer.
    • Tullsen, Mark. (2002). PATH, A Program Transformation System for Haskell. Ph.D. thesis, Yale University.
    • Voigtla¨nder, Janis. (2008). Asymptotic Improvement of Computations over Free Monads. Pages 388-403 of: Mathematics of Program Construction. Lecture Notes in Computer Science, vol. 5133. Springer.
    • Winskel, Glynn. (1993). The Formal Semantics of Programming Languages - An Introduction. Foundation of Computing. MIT.
  • No related research data.
  • No similar publications.

Share - Bookmark

Funded by projects

  • NSF | SHF: Small: Improving the A...

Cite this article