{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T21:09:59Z","timestamp":1760044199415,"version":"3.37.3"},"publisher-location":"Cham","reference-count":32,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030336356"},{"type":"electronic","value":"9783030336363"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-33636-3_15","type":"book-chapter","created":{"date-parts":[[2019,10,19]],"date-time":"2019-10-19T10:02:20Z","timestamp":1571479340000},"page":"414-443","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":6,"title":["Unraveling Recursion: Compiling an IR with Recursion to System F"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0602-1657","authenticated-orcid":false,"given":"Michael","family":"Peyton Jones","sequence":"first","affiliation":[]},{"given":"Vasilis","family":"Gkoumas","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4687-2739","authenticated-orcid":false,"given":"Roman","family":"Kireev","sequence":"additional","affiliation":[]},{"given":"Kenneth","family":"MacKenzie","sequence":"additional","affiliation":[]},{"given":"Chad","family":"Nester","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7619-6378","authenticated-orcid":false,"given":"Philip","family":"Wadler","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,10,20]]},"reference":[{"key":"15_CR1","unstructured":"Abadi, M., Cardelli, L., Plotkin, G.: Types for the Scott numerals (1993)"},{"key":"15_CR2","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"453","DOI":"10.1007\/3-540-48168-0_32","volume-title":"Computer Science Logic","author":"T Altenkirch","year":"1999","unstructured":"Altenkirch, T., Reus, B.: Monadic presentations of lambda terms using generalized inductive types. In: Flum, J., Rodriguez-Artalejo, M. (eds.) CSL 1999. LNCS, vol. 1683, pp. 453\u2013468. Springer, Heidelberg (1999). https:\/\/doi.org\/10.1007\/3-540-48168-0_32"},{"key":"15_CR3","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"28","DOI":"10.1007\/10704973_2","volume-title":"Advanced Functional Programming","author":"R Backhouse","year":"1999","unstructured":"Backhouse, R., Jansson, P., Jeuring, J., Meertens, L.: Generic programming \u2014 an introduction. In: Swierstra, S.D., Oliveira, J.N., Henriques, P.R. (eds.) AFP 1998. LNCS, vol. 1608, pp. 28\u2013115. Springer, Heidelberg (1999). https:\/\/doi.org\/10.1007\/10704973_2"},{"issue":"5","key":"15_CR4","doi-asserted-by":"publisher","first-page":"552","DOI":"10.1017\/S095679681300018X","volume":"23","author":"E Brady","year":"2013","unstructured":"Brady, E.: Idris, a general-purpose dependently typed programming language: design and implementation. J. Funct. Program. 23(5), 552\u2013593 (2013). https:\/\/doi.org\/10.1017\/S095679681300018X","journal-title":"J. Funct. Program."},{"key":"15_CR5","series-title":"Graduate Texts in Mathematics","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4757-6848-0","volume-title":"Topology and Geometry","author":"GE Bredon","year":"1993","unstructured":"Bredon, G.E.: Topology and Geometry. Graduate Texts in Mathematics, vol. 139. Springer, New York (1993). https:\/\/doi.org\/10.1007\/978-1-4757-6848-0"},{"key":"15_CR6","doi-asserted-by":"publisher","unstructured":"Brown, M., Palsberg, J.: Typed self-evaluation via intensional type functions. In: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, pp. 415\u2013428. ACM, New York (2017). https:\/\/doi.org\/10.1145\/3009837.3009853 . http:\/\/doi.acm.org\/10.1145\/3009837.3009853","DOI":"10.1145\/3009837.3009853"},{"key":"15_CR7","doi-asserted-by":"publisher","unstructured":"Cai, Y., Giarrusso, P.G., Ostermann, K.: System F-omega with equirecursive types for datatype-generic programming. In: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, pp. 30\u201343. ACM, New York (2016). https:\/\/doi.org\/10.1145\/2837614.2837660 . http:\/\/doi.acm.org\/10.1145\/2837614.2837660","DOI":"10.1145\/2837614.2837660"},{"key":"15_CR8","doi-asserted-by":"crossref","unstructured":"Chapman, J., Kireev, R., Nester, C., Wadler, P.: System $$F$$ in Agda, for fun and profit. In: Hutton, G. (ed.) MPC 2019. LNCS, vol. 11825, pp. 255\u2013297. Springer, Cham (2019)","DOI":"10.1007\/978-3-030-33636-3_10"},{"key":"15_CR9","unstructured":"Danvy, O., Hatcliff, J.: Thunks (continued). In: Proceedings of Actes WSA 1992 Workshop on Static Analysis, Bordeaux, France, Laboratoire Bordelais de Recherche en Informatique (LaBRI), pp. 3\u201311, September 1992"},{"key":"15_CR10","unstructured":"Dreyer, D.: Understanding and evolving the ML module system. Ph.D. thesis, Carnegie Mellon University, Pittsburgh, PA, USA (2005). aAI3166274"},{"key":"15_CR11","doi-asserted-by":"publisher","unstructured":"Dreyer, D.: A type system for recursive modules. In: Proceedings of the 12th ACM SIGPLAN International Conference on Functional Programming, ICFP 2007, pp. 289\u2013302. ACM, New York (2007). https:\/\/doi.org\/10.1145\/1291151.1291196 . http:\/\/doi.acm.org\/10.1145\/1291151.1291196","DOI":"10.1145\/1291151.1291196"},{"key":"15_CR12","series-title":"Graduate Texts in Mathematics","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-4180-5","volume-title":"Algebraic Topology: A First Course","author":"W Fulton","year":"1995","unstructured":"Fulton, W.: Algebraic Topology: A First Course. Graduate Texts in Mathematics, vol. 153. Springer, New York (1995). https:\/\/doi.org\/10.1007\/978-1-4612-4180-5"},{"issue":"3\u20134","key":"15_CR13","doi-asserted-by":"publisher","first-page":"371","DOI":"10.1007\/s10990-005-4881-8","volume":"18","author":"M Goldberg","year":"2005","unstructured":"Goldberg, M.: A variadic extension of curry\u2019s fixed-point combinator. High. Order Symbol. Comput. 18(3\u20134), 371\u2013388 (2005). https:\/\/doi.org\/10.1007\/s10990-005-4881-8","journal-title":"High. Order Symbol. Comput."},{"key":"15_CR14","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781139342131","volume-title":"Practical Foundations for Programming Languages","author":"R Harper","year":"2012","unstructured":"Harper, R.: Practical Foundations for Programming Languages. Cambridge University Press, New York (2012)"},{"key":"15_CR15","doi-asserted-by":"publisher","unstructured":"Hirschowitz, T., Leroy, X., Wells, J.B.: Compilation of extended recursion in call-by-value functional languages. In: Proceedings of the 5th ACM SIGPLAN International Conference on Principles and Practice of Declaritive Programming, PPDP 2003, pp. 160\u2013171. ACM, New York (2003). https:\/\/doi.org\/10.1145\/888251.888267 . http:\/\/doi.acm.org\/10.1145\/888251.888267","DOI":"10.1145\/888251.888267"},{"key":"15_CR16","unstructured":"IOHK: Plutus, May 2019. https:\/\/github.com\/input-output-hk\/plutus . Accessed 01 May 2019"},{"key":"15_CR17","unstructured":"IOHK: Plutus playground, May 2019. https:\/\/prod.playground.plutus.iohkdev.io\/ . Accessed 01 May 2019"},{"key":"15_CR18","unstructured":"Kiselyov, O.: Many faces of the fixed-point combinator, August 2013. http:\/\/okmij.org\/ftp\/Computation\/fixed-point-combinators.html . Accessed 21 Feb 2019"},{"key":"15_CR19","doi-asserted-by":"publisher","unstructured":"Koopman, P., Plasmeijer, R., Jansen, J.M.: Church encoding of data types considered harmful for implementations: functional pearl. In: Proceedings of the 26th 2014 International Symposium on Implementation and Application of Functional Languages, IFL 2014, pp. 4:1\u20134:12. ACM, New York (2014). https:\/\/doi.org\/10.1145\/2746325.2746330 . http:\/\/doi.acm.org\/10.1145\/2746325.2746330","DOI":"10.1145\/2746325.2746330"},{"key":"15_CR20","unstructured":"Leroy, X.: The ZINC experiment: an economical implementation of the ML language. Ph.D. thesis, INRIA (1990)"},{"key":"15_CR21","doi-asserted-by":"publisher","unstructured":"L\u00f6h, A., Magalh\u00e3es, J.P.: Generic programming with indexed functors. In: Proceedings of the Seventh ACM SIGPLAN Workshop on Generic Programming, WGP 2011, pp. 1\u201312. ACM, New York (2011). https:\/\/doi.org\/10.1145\/2036918.2036920 . http:\/\/doi.acm.org\/10.1145\/2036918.2036920","DOI":"10.1145\/2036918.2036920"},{"key":"15_CR22","doi-asserted-by":"publisher","unstructured":"Mitchell, J.C., Plotkin, G.D.: Abstract types have existential types. In: Proceedings of the 12th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL 1985, pp. 37\u201351. ACM, New York (1985). https:\/\/doi.org\/10.1145\/318593.318606 . http:\/\/doi.acm.org\/10.1145\/318593.318606","DOI":"10.1145\/318593.318606"},{"key":"15_CR23","doi-asserted-by":"publisher","unstructured":"Nordlander, J., Carlsson, M., Gill, A.J.: Unrestricted pure call-by-value recursion. In: Proceedings of the 2008 ACM SIGPLAN Workshop on ML, ML 2008, pp. 23\u201334. ACM, New York (2008). https:\/\/doi.org\/10.1145\/1411304.1411309 . http:\/\/doi.acm.org\/10.1145\/1411304.1411309","DOI":"10.1145\/1411304.1411309"},{"key":"15_CR24","unstructured":"Norell, U.: Towards a practical programming language based on dependent type theory. Ph.D. thesis, Chalmers University of Technology (2007)"},{"key":"15_CR25","unstructured":"Peyton Jones, S., Meijer, E.: Henk: A typed intermediate language. In: Proceedings of the First International Workshop on Types in Compilation (1997)"},{"issue":"1\u20133","key":"15_CR26","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1016\/S0167-6423(97)00029-4","volume":"32","author":"SL Peyton","year":"1998","unstructured":"Peyton, S.L., Santos, A.L.M.: A transformation-based optimiser for haskell. Sci. Comput. Program. 32(1\u20133), 3\u201347 (1998). https:\/\/doi.org\/10.1016\/S0167-6423(97)00029-4","journal-title":"Sci. Comput. Program."},{"key":"15_CR27","volume-title":"Types and Programming Languages","author":"BC Pierce","year":"2002","unstructured":"Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)"},{"key":"15_CR28","unstructured":"Steele, G.L., Sussman, G.J.: Lambda: the ultimate imperative. Technical report, Cambridge, MA, USA (1976)"},{"key":"15_CR29","doi-asserted-by":"crossref","unstructured":"Steele Jr., G.L.: It\u2019s time for a new old language. In: PPOPP, p. 1 (2017)","DOI":"10.1145\/3155284.3018773"},{"key":"15_CR30","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"398","DOI":"10.1007\/978-3-642-39212-2_36","volume-title":"Automata, Languages, and Programming","author":"C Stirling","year":"2013","unstructured":"Stirling, C.: Proof systems for retracts in simply typed lambda calculus. In: Fomin, F.V., Freivalds, R., Kwiatkowska, M., Peleg, D. (eds.) ICALP 2013, Part II. LNCS, vol. 7966, pp. 398\u2013409. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-642-39212-2_36"},{"issue":"2","key":"15_CR31","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1016\/j.entcs.2005.11.038","volume":"148","author":"D Syme","year":"2006","unstructured":"Syme, D.: Initializing mutually referential abstract objects: the value recursion challenge. Electron. Notes Theor. Comput. Sci. 148(2), 3\u201325 (2006). https:\/\/doi.org\/10.1016\/j.entcs.2005.11.038","journal-title":"Electron. Notes Theor. Comput. Sci."},{"issue":"9","key":"15_CR32","doi-asserted-by":"publisher","first-page":"233","DOI":"10.1145\/1631687.1596585","volume":"44","author":"Alexey Rodriguez Yakushev","year":"2009","unstructured":"Yakushev, A.R., Holdermans, S., L\u00f6h, A., Jeuring, J.: Generic programming with fixed points for mutually recursive datatypes. SIGPLAN Not 44(9), 233\u2013244 (2009). https:\/\/doi.org\/10.1145\/1631687.1596585 . http:\/\/doi.acm.org\/10.1145\/1631687.1596585","journal-title":"ACM SIGPLAN Notices"}],"container-title":["Lecture Notes in Computer Science","Mathematics of Program Construction"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-33636-3_15","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,12,9]],"date-time":"2019-12-09T17:27:30Z","timestamp":1575912450000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-33636-3_15"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030336356","9783030336363"],"references-count":32,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-33636-3_15","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"20 October 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"MPC","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Mathematics of Program Construction","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Porto","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Portugal","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"7 October 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"9 October 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"13","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"mpc2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.cs.nott.ac.uk\/~pszgmh\/mpc19.html","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"22","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"15","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"68% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}