{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,20]],"date-time":"2025-07-20T04:06:18Z","timestamp":1752984378027},"reference-count":17,"publisher":"Cambridge University Press (CUP)","issue":"1","license":[{"start":{"date-parts":[[2014,4,16]],"date-time":"2014-04-16T00:00:00Z","timestamp":1397606400000},"content-version":"unspecified","delay-in-days":105,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2014,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>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 paper 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.<\/jats:p>","DOI":"10.1017\/s0956796814000045","type":"journal-article","created":{"date-parts":[[2014,4,16]],"date-time":"2014-04-16T12:53:17Z","timestamp":1397652797000},"page":"113-127","source":"Crossref","is-referenced-by-count":6,"title":["Work it, wrap it, fix it, fold it"],"prefix":"10.1017","volume":"24","author":[{"given":"NEIL","family":"SCULTHORPE","sequence":"first","affiliation":[]},{"given":"GRAHAM","family":"HUTTON","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2014,4,16]]},"reference":[{"key":"S0956796814000045_ref14","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-41582-1_6"},{"key":"S0956796814000045_ref9","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_7"},{"key":"S0956796814000045_ref15","unstructured":"Tullsen, M. (2002) PATH, A Program Transformation System for Haskell. PhD thesis, Yale University, Yale. CT."},{"key":"S0956796814000045_ref13","volume-title":"Denotational Semantics: A Methodology for Language Development","author":"Schmidt","year":"1986"},{"key":"S0956796814000045_ref1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-47797-7_4"},{"key":"S0956796814000045_ref11","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_30"},{"key":"S0956796814000045_ref4","first-page":"1","volume-title":"Proceedings of the 2012 Haskell Symposium","author":"Farmer","year":"2012"},{"key":"S0956796814000045_ref7","doi-asserted-by":"publisher","DOI":"10.1007\/BF00289507"},{"key":"S0956796814000045_ref2","volume-title":"Algebra of Programming","author":"Bird","year":"1997"},{"key":"S0956796814000045_ref16","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70594-9_20"},{"key":"S0956796814000045_ref17","doi-asserted-by":"publisher","DOI":"10.7551\/mitpress\/3054.001.0001"},{"key":"S0956796814000045_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796810000080"},{"key":"S0956796814000045_ref10","doi-asserted-by":"publisher","DOI":"10.1007\/BF00277386"},{"key":"S0956796814000045_ref8","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796810000122"},{"key":"S0956796814000045_ref6","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809007175"},{"key":"S0956796814000045_ref12","unstructured":"Scherlis, W. L. (1980) Expression Procedures and Program Derivation. PhD thesis, Stanford University, Stanford, CA."},{"key":"S0956796814000045_ref3","doi-asserted-by":"publisher","DOI":"10.1145\/321992.321996"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796814000045","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,8,3]],"date-time":"2021-08-03T07:30:03Z","timestamp":1627975803000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796814000045\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2014,1]]},"references-count":17,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2014,1]]}},"alternative-id":["S0956796814000045"],"URL":"https:\/\/doi.org\/10.1017\/s0956796814000045","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2014,1]]}}}