{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:43Z","timestamp":1779836743091,"version":"3.53.1"},"reference-count":20,"publisher":"Cambridge University Press (CUP)","issue":"3-4","license":[{"start":{"date-parts":[[2010,6,30]],"date-time":"2010-06-30T00:00:00Z","timestamp":1277856000000},"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":[[2010,7]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    The worker\/wrapper transformation is a general technique for improving the performance of recursive programs by changing their types. The previous formalisation (A. Gill &amp; G. Hutton,\n                    <jats:italic>J. Funct. Program.<\/jats:italic>\n                    , vol. 19, 2009, pp. 227\u2013251) 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.\n                  <\/jats:p>","DOI":"10.1017\/s0956796810000122","type":"journal-article","created":{"date-parts":[[2010,6,30]],"date-time":"2010-06-30T06:03:26Z","timestamp":1277877806000},"page":"353-373","source":"Crossref","is-referenced-by-count":18,"title":["Factorising folds for faster functions"],"prefix":"10.1017","volume":"20","author":[{"given":"GRAHAM","family":"HUTTON","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"MAURO","family":"JASKELIOFF","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"ANDY","family":"GILL","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2010,6,30]]},"reference":[{"key":"S0956796810000122_ref2","volume-title":"Algebra of Programming","author":"Bird","year":"1997"},{"key":"S0956796810000122_ref18","first-page":"50","volume-title":"Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming","author":"Peyton Jones","year":"2006"},{"key":"S0956796810000122_ref19","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806006034"},{"key":"S0956796810000122_ref13","first-page":"333","volume-title":"Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","author":"Liang","year":"1995"},{"key":"S0956796810000122_ref20","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70594-9_20"},{"key":"S0956796810000122_ref15","volume-title":"Proceedings of the Conference on Functional Programming and Computer Architecture","author":"Meijer","year":"1991"},{"key":"S0956796810000122_ref12","first-page":"297","volume-title":"Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","author":"Johann","year":"2008"},{"key":"S0956796810000122_ref16","volume-title":"Haskell 98 Language and Libraries: The Revised Report","author":"Peyton Jones","year":"2003"},{"key":"S0956796810000122_ref3","volume-title":"Principles of Programming Languages","author":"Danielsson","year":"2006"},{"key":"S0956796810000122_ref8","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003500"},{"key":"S0956796810000122_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809007175"},{"key":"S0956796810000122_ref10","volume-title":"Trends in Functional Programming","author":"Hutton","year":"2006"},{"key":"S0956796810000122_ref1","doi-asserted-by":"publisher","DOI":"10.1007\/10704973_2"},{"key":"S0956796810000122_ref7","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(86)90059-1"},{"key":"S0956796810000122_ref6","doi-asserted-by":"publisher","DOI":"10.1007\/BF00289507"},{"key":"S0956796810000122_ref9","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511813672"},{"key":"S0956796810000122_ref11","first-page":"64","volume-title":"Proceedings of the European Symposium on Programming","author":"Jaskelioff","year":"2009"},{"key":"S0956796810000122_ref4","doi-asserted-by":"publisher","DOI":"10.1007\/11783596_12"},{"key":"S0956796810000122_ref14","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(90)90023-7"},{"key":"S0956796810000122_ref17","volume-title":"Proceedings of the Conference on Functional Programming and Computer Architecture","author":"Peyton Jones","year":"1991"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796810000122","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:36:22Z","timestamp":1779834982000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796810000122\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,6,30]]},"references-count":20,"journal-issue":{"issue":"3-4","published-print":{"date-parts":[[2010,7]]}},"alternative-id":["S0956796810000122"],"URL":"https:\/\/doi.org\/10.1017\/s0956796810000122","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2010,6,30]]}}}