{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,9,4]],"date-time":"2023-09-04T21:12:38Z","timestamp":1693861958035},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"4","license":[{"start":{"date-parts":[[2003,6,25]],"date-time":"2003-06-25T00:00:00Z","timestamp":1056499200000},"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":[[2003,7]]},"abstract":"<jats:p><jats:italic>Fusion<\/jats:italic> is the process of removing intermediate data structures from modularly constructed functional programs. <jats:italic>Short cut fusion<\/jats:italic> is a particular fusion technique which uses a single, local transformation rule to fuse compositions of list-processing functions. Short cut fusion has traditionally been treated purely syntactically, and justifications for it have appealed either to intuition or to \u201cfree theorems\u201d \u2013 even though the latter have not been known to hold in languages supporting higher-order polymorphic functions and fixpoint recursion. In this paper we use Pitts' recent demonstration that contextual equivalence in such languages is parametric to provide the first formal proof of the correctness of short cut fusion for them. In particular, we show that programs which have undergone short cut fusion are contextually equivalent to their unfused counterparts.<\/jats:p>","DOI":"10.1017\/s0956796802004409","type":"journal-article","created":{"date-parts":[[2003,6,25]],"date-time":"2003-06-25T14:53:46Z","timestamp":1056552826000},"page":"797-814","source":"Crossref","is-referenced-by-count":16,"title":["Short cut fusion is correct"],"prefix":"10.1017","volume":"13","author":[{"given":"PATRICIA","family":"JOHANN","sequence":"first","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2003,6,25]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796802004409","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,4,2]],"date-time":"2019-04-02T18:51:31Z","timestamp":1554231091000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796802004409\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2003,6,25]]},"references-count":0,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2003,7]]}},"alternative-id":["S0956796802004409"],"URL":"https:\/\/doi.org\/10.1017\/s0956796802004409","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2003,6,25]]}}}