{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,6,23]],"date-time":"2023-06-23T05:14:55Z","timestamp":1687497295047},"reference-count":38,"publisher":"Cambridge University Press (CUP)","issue":"3","license":[{"start":{"date-parts":[[2012,5,8]],"date-time":"2012-05-08T00:00:00Z","timestamp":1336435200000},"content-version":"unspecified","delay-in-days":7,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2012,5]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Functional languages are suitable for transformational developments of programs. However, accumulative functions, or in particular tail-recursive functions, are known to be less suitable for manipulation. In this paper, we propose a program transformation named \u201cIO swapping\u201d that swaps call-time and return-time computations. It moves computations in accumulative parameters to results and thereby enables interesting transformations. We demonstrate effectiveness of IO swapping by several applications: deforestation, higher order removal, program inversion, and manipulation of circular programs.<\/jats:p>","DOI":"10.1017\/s0956796812000111","type":"journal-article","created":{"date-parts":[[2012,5,8]],"date-time":"2012-05-08T10:11:05Z","timestamp":1336471865000},"page":"275-299","source":"Crossref","is-referenced-by-count":0,"title":["Manipulating accumulative functions by swapping call-time and return-time computations"],"prefix":"10.1017","volume":"22","author":[{"given":"AKIMASA","family":"MORIHATA","sequence":"first","affiliation":[]},{"given":"KAZUHIKO","family":"KAKEHI","sequence":"additional","affiliation":[]},{"given":"ZHENJIANG","family":"HU","sequence":"additional","affiliation":[]},{"given":"MASATO","family":"TAKEICHI","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2012,5,8]]},"reference":[{"key":"S0956796812000111_ref26","doi-asserted-by":"crossref","unstructured":"Morihata A. (2006) Relationship between Arguments and Results of Recursive Functions. Master's thesis, Graduate School of Information Science and Technology, University of Tokyo, Japan.","DOI":"10.1007\/11783596_22"},{"key":"S0956796812000111_ref13","first-page":"131","volume-title":"Proceedings of the 2011 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2011)","author":"Fernandes","year":"2011"},{"key":"S0956796812000111_ref16","unstructured":"Gill A. (1996) Cheap Deforestation for Non-Strict Functional Languages. PhD. thesis, Department of Computing Science, Glasgow University, Glasgow, UK."},{"key":"S0956796812000111_ref5","doi-asserted-by":"publisher","DOI":"10.1145\/321864.321875"},{"key":"S0956796812000111_ref35","doi-asserted-by":"publisher","DOI":"10.1023\/B:LISP.0000029450.36668.cb"},{"key":"S0956796812000111_ref14","first-page":"293","volume-title":"Proceedings of the 9th International Workshop on Logic Programming Synthesis and Transformation (LOPSTR'99)","author":"Giesl","year":"2000"},{"key":"S0956796812000111_ref33","doi-asserted-by":"publisher","DOI":"10.1145\/581478.581491"},{"key":"S0956796812000111_ref18","first-page":"367","article-title":"A method for automatic program inversion based on LR(0) parsing","volume":"66","author":"Gl\u00fcck","year":"2005","journal-title":"Fundam. Inform."},{"key":"S0956796812000111_ref27","first-page":"379","volume-title":"Proceedings of the 8th International Conference on Mathematics of Program Construction (MPC 2006)","author":"Morihata","year":"2006"},{"key":"S0956796812000111_ref1","first-page":"28","volume-title":"Advanced Functional Programming, Third International School, Braga, Portugal, Revised Lectures","author":"Backhouse","year":"1999"},{"key":"S0956796812000111_ref37","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(90)90147-A"},{"key":"S0956796812000111_ref38","doi-asserted-by":"publisher","DOI":"10.1145\/322169.322183"},{"key":"S0956796812000111_ref25","first-page":"322","volume-title":"Proceedings of 6th International Andrei Ershov Memorial Conference on Perspectives of Systems Informatics (PSI 2006)","author":"Mogensen","year":"2006"},{"key":"S0956796812000111_ref21","doi-asserted-by":"publisher","DOI":"10.1007\/10705424_8"},{"key":"S0956796812000111_ref31","volume-title":"Haskell 98 Language and Libraries: The Revised Report","author":"Peyton","year":"2003"},{"key":"S0956796812000111_ref9","doi-asserted-by":"publisher","DOI":"10.1007\/10704567_22"},{"key":"S0956796812000111_ref36","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796803004933"},{"key":"S0956796812000111_ref17","doi-asserted-by":"publisher","DOI":"10.1145\/165180.165214"},{"key":"S0956796812000111_ref2","doi-asserted-by":"publisher","DOI":"10.1007\/BF00264249"},{"key":"S0956796812000111_ref6","doi-asserted-by":"publisher","DOI":"10.1145\/800168.811550"},{"key":"S0956796812000111_ref4","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(92)90008-Y"},{"key":"S0956796812000111_ref28","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-40018-9_24"},{"key":"S0956796812000111_ref32","volume-title":"Concepts, Techniques, and Models of Computer Programming","author":"Roy","year":"2004"},{"key":"S0956796812000111_ref20","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-49382-2_13"},{"key":"S0956796812000111_ref15","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlap.2006.11.001"},{"key":"S0956796812000111_ref11","doi-asserted-by":"crossref","first-page":"95","DOI":"10.1145\/1291201.1291216","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Haskell (Haskell 2007), Freiburg","author":"Fernandes","year":"2007"},{"key":"S0956796812000111_ref7","doi-asserted-by":"publisher","DOI":"10.1145\/321992.321996"},{"key":"S0956796812000111_ref29","first-page":"101","volume-title":"Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'04)","author":"Nishimura","year":"2004"},{"key":"S0956796812000111_ref3","volume-title":"Introduction to Functional Programming","author":"Bird","year":"1989"},{"key":"S0956796812000111_ref34","first-page":"306","volume-title":"Proceedings of SIGPLAN-SIGARCH-WG2.8 Conference on Functional Programming Languages and Computer Architecture (conference record of FPCA'95)","author":"Takano","year":"1995"},{"key":"S0956796812000111_ref10","first-page":"397","article-title":"There and back again","volume":"66","author":"Danvy","year":"2005","journal-title":"Fundam. Inform."},{"key":"S0956796812000111_ref30","doi-asserted-by":"crossref","first-page":"81","DOI":"10.1145\/1480945.1480958","volume-title":"Proceedings of the 2009 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM 2009)","author":"Pardo","year":"2009"},{"key":"S0956796812000111_ref23","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-11957-6_24"},{"key":"S0956796812000111_ref12","doi-asserted-by":"publisher","DOI":"10.1145\/1244381.1244399"},{"key":"S0956796812000111_ref8","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800001179"},{"key":"S0956796812000111_ref24","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_7"},{"key":"S0956796812000111_ref19","doi-asserted-by":"publisher","DOI":"10.1017\/S095679680800693X"},{"key":"S0956796812000111_ref22","first-page":"154","volume-title":"Proceedings of the 12th International Conference on Rewriting Techniques and Applications (RTA 2001), Utrecht, the Netherlands","author":"K\u00fchnemann","year":"2001"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796812000111","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,6,22]],"date-time":"2023-06-22T15:02:25Z","timestamp":1687446145000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796812000111\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,5]]},"references-count":38,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2012,5]]}},"alternative-id":["S0956796812000111"],"URL":"https:\/\/doi.org\/10.1017\/s0956796812000111","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,5]]}}}