{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:33Z","timestamp":1779836733220,"version":"3.53.1"},"reference-count":39,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2009,3,1]],"date-time":"2009-03-01T00:00:00Z","timestamp":1235865600000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2009,3]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>The worker\/wrapper transformation is a technique for changing the type of a computation, usually with the aim of improving its performance. It has been used by compiler writers for many years, but the technique is little known in the wider functional programming community, and has never been described precisely. In this article we explain, formalise and explore the generality of the worker\/wrapper transformation. We also provide a systematic recipe for its use as an equational reasoning technique for improving the performance of programs, and illustrate the power of this recipe using a range of examples.<\/jats:p>","DOI":"10.1017\/s0956796809007175","type":"journal-article","created":{"date-parts":[[2009,3,6]],"date-time":"2009-03-06T09:30:00Z","timestamp":1236331800000},"page":"227-251","source":"Crossref","is-referenced-by-count":45,"title":["The worker\/wrapper transformation"],"prefix":"10.1017","volume":"19","author":[{"given":"ANDY","family":"GILL","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"GRAHAM","family":"HUTTON","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2009,3,1]]},"reference":[{"key":"S0956796809007175_ref38","volume-title":"Proceedings of the Marktoberdorf Summer School on Program Design Calculi","author":"Wadler","year":"1992"},{"key":"S0956796809007175_ref37","volume-title":"Proceedings of the First International Symposium on Functional Programming Languages in Education","author":"Turner","year":"1995"},{"key":"S0956796809007175_ref36","doi-asserted-by":"publisher","DOI":"10.1023\/A:1020887011500"},{"key":"S0956796809007175_ref33","unstructured":"Santos Andre (1995) Compilation by Transformation in Non-strict Functional Languages. Ph.D. thesis, University of Glasgow."},{"key":"S0956796809007175_ref32","volume-title":"Higher Order Operational Techniques in Semantics","author":"Sands","year":"1998"},{"key":"S0956796809007175_ref39","first-page":"1","volume-title":"Proc. Principles Prog. Lang","author":"Wadler","year":"1992"},{"key":"S0956796809007175_ref28","volume-title":"Proceedings of the Conference on Functional Programming and Computer Architecture","author":"Peyton Jones","year":"1991"},{"key":"S0956796809007175_ref27","volume-title":"Haskell 98 Language and Libraries: The Revised Report","author":"Peyton Jones","year":"2003"},{"key":"S0956796809007175_ref23","volume-title":"Proceedings of the Seventh ACM SIGPLAN\/SIGARCH International Conference on Functional Programming Languages and Computer Architecture","author":"Launchbury","year":"1995"},{"key":"S0956796809007175_ref25","volume-title":"Proceedings of the Conference on Functional Programming and Computer Architecture","author":"Meijer","year":"1991"},{"key":"S0956796809007175_ref21","volume-title":"Fifth Symposium on Trends in Functional Programming","author":"Hutton","year":"2006"},{"key":"S0956796809007175_ref20","volume-title":"Proceedings of the Seventh International Conference on Mathematics of Program Construction","author":"Hutton","year":"2004"},{"key":"S0956796809007175_ref19","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511813672"},{"key":"S0956796809007175_ref18","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003500"},{"key":"S0956796809007175_ref17","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(86)90059-1"},{"key":"S0956796809007175_ref16","doi-asserted-by":"publisher","DOI":"10.1007\/BF00289507"},{"key":"S0956796809007175_ref14","volume-title":"Proceedings of the Conference on Functional Programming Languages and Computer Architecture","author":"Gill","year":"1993"},{"key":"S0956796809007175_ref12","unstructured":"Gill Andy (1996) Cheap Deforestation for Non-Strict Functional Languages. Ph.D. thesis, University of Glasgow."},{"key":"S0956796809007175_ref10","volume-title":"Design Patterns","author":"Gamma","year":"1995"},{"key":"S0956796809007175_ref9","volume-title":"Proceedings of the 2007 ACM SIGPLAN International Conference on Functional Programming","author":"Coutts","year":"2007"},{"key":"S0956796809007175_ref8","volume-title":"Proceedings of 11th International Workshop on Implementation of Functional Languages","author":"Chitil","year":"2000"},{"key":"S0956796809007175_ref31","volume-title":"Proceedings of the ACM Annual Conference","author":"Reynolds","year":"1972"},{"key":"S0956796809007175_ref6","doi-asserted-by":"publisher","DOI":"10.1145\/321992.321996"},{"key":"S0956796809007175_ref7","unstructured":"Chitil Olaf (2000a) Type-Inference Based Deforestation of Functional Programs. Ph.D. thesis, RWTH Aachen."},{"key":"S0956796809007175_ref1","volume-title":"Proceedings of the Fifth ACM-SIGPLAN International Conference on Principles and Practice of Declarative Programming","author":"Ager","year":"2003"},{"key":"S0956796809007175_ref5","volume-title":"Introduction to Functional Programming using Haskell","author":"Bird","year":"1998"},{"key":"S0956796809007175_ref13","volume-title":"Proceedings of the 2006 ACM SIGPLAN Workshop on Haskell","author":"Gill","year":"2006"},{"key":"S0956796809007175_ref30","volume-title":"Proceedings of the 2001 ACM SIGPLAN Workshop on Haskell","author":"Peyton Jones","year":"2001"},{"key":"S0956796809007175_ref35","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(90)90056-J"},{"key":"S0956796809007175_ref29","volume-title":"Proceedings of the 1993 Glasgow Workshop on Functional Programming","author":"Peyton Jones","year":"1993"},{"key":"S0956796809007175_ref4","volume-title":"Proceedings of the Sixth International Conference on Category Theory and Computer Science","author":"Backhouse","year":"1995"},{"key":"S0956796809007175_ref26","doi-asserted-by":"publisher","DOI":"10.1038\/218019a0"},{"key":"S0956796809007175_ref24","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006326"},{"key":"S0956796809007175_ref22","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006363"},{"key":"S0956796809007175_ref34","volume-title":"Denotational Semantics: A Methodology for Language Development","author":"Schmidt","year":"1986"},{"key":"S0956796809007175_ref15","volume-title":"Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming","author":"Hinze","year":"2008"},{"key":"S0956796809007175_ref2","volume-title":"Typed Lambda Calculi and Applications","author":"Altenkirch","year":"2001"},{"key":"S0956796809007175_ref11","volume-title":"Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming","author":"Gibbons","year":"1998"},{"key":"S0956796809007175_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-47797-7"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796809007175","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:56Z","timestamp":1779834956000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796809007175\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2009,3]]},"references-count":39,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2009,3]]}},"alternative-id":["S0956796809007175"],"URL":"https:\/\/doi.org\/10.1017\/s0956796809007175","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2009,3]]}}}