{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,21]],"date-time":"2025-06-21T04:06:01Z","timestamp":1750478761754,"version":"3.41.0"},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"3","license":[{"start":{"date-parts":[[2003,5,13]],"date-time":"2003-05-13T00:00:00Z","timestamp":1052784000000},"content-version":"unspecified","delay-in-days":12,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2003,5]]},"abstract":"<jats:p>We present a formal and general specification of lambda lifting and prove its correctness with respect to a call-by-name operational semantics. We use this specification to prove the correctness of a lambda lifting algorithm similar to the one proposed by Johnsson. Lambda lifting is a program transformation that eliminates free variables from functions by introducing additional formal parameters to function definitions and additional actual parameters to function calls. This operation supports the transformation from a lexically-structured functional program into a set of recursive equations. Existing results provide specific algorithms and only limited correctness results. Our work provides a more general specification of lambda lifting (and related operations) that supports flexible translation strategies, which may result in new implementation techniques. Our work also supports a simple framework in which the interaction of lambda lifting and other optimizations can be studied and from which new algorithms might be obtained.<\/jats:p>","DOI":"10.1017\/s0956796802004604","type":"journal-article","created":{"date-parts":[[2003,5,13]],"date-time":"2003-05-13T16:28:17Z","timestamp":1052843297000},"page":"509-543","source":"Crossref","is-referenced-by-count":5,"title":["Specification and correctness of lambda lifting"],"prefix":"10.1017","volume":"13","author":[{"given":"ADAM","family":"FISCHBACH","sequence":"first","affiliation":[]},{"given":"JOHN","family":"HANNAN","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2003,5,13]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796802004604","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,20]],"date-time":"2025-06-20T19:27:54Z","timestamp":1750447674000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796802004604\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2003,5]]},"references-count":0,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2003,11]]}},"alternative-id":["S0956796802004604"],"URL":"https:\/\/doi.org\/10.1017\/s0956796802004604","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"type":"print","value":"0956-7968"},{"type":"electronic","value":"1469-7653"}],"subject":[],"published":{"date-parts":[[2003,5]]}}}