{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,9]],"date-time":"2026-01-09T03:31:22Z","timestamp":1767929482875,"version":"3.49.0"},"reference-count":30,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2020,8,2]],"date-time":"2020-08-02T00:00:00Z","timestamp":1596326400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1719158"],"award-info":[{"award-number":["1719158"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,8,2]]},"abstract":"<jats:p>A language supporting polymorphism is a boon to programmers: they can express complex ideas once and reuse functions in a variety of situations. However, polymorphism is pain for compilers tasked with producing efficient code that manipulates concrete values.<\/jats:p>\n          <jats:p>This paper presents a new intermediate language that allows for efficient static compilation, while still supporting flexible polymorphism. Specifically, it permits polymorphism over not only the types of values, but also the representation of values, the arity of primitive machine functions, and the evaluation order of arguments---all three of which are useful in practice. The key insight is to encode information about a value's calling convention in the kind of its type, rather than in the type itself.<\/jats:p>","DOI":"10.1145\/3408986","type":"journal-article","created":{"date-parts":[[2020,8,3]],"date-time":"2020-08-03T13:48:02Z","timestamp":1596462482000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":9,"title":["Kinds are calling conventions"],"prefix":"10.1145","volume":"4","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0165-9387","authenticated-orcid":false,"given":"Paul","family":"Downen","sequence":"first","affiliation":[{"name":"University of Oregon, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Zena M.","family":"Ariola","sequence":"additional","affiliation":[{"name":"University of Oregon, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Simon","family":"Peyton Jones","sequence":"additional","affiliation":[{"name":"Microsoft Research, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Richard A.","family":"Eisenberg","sequence":"additional","affiliation":[{"name":"Bryn Mawr College, USA \/ Tweag I\/O, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,8,3]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1093\/logcom\/2.3.297"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002724"},{"key":"e_1_2_2_3_1","first-page":"1","volume-title":"Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell","author":"Maximilian","unstructured":"Maximilian C. Bolingbroke and Simon L. Peyton Jones. 2009. Types Are Calling Conventions . In Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell ( Edinburgh, Scotland) ( Haskell '09). ACM , 1 - 12 . Maximilian C. Bolingbroke and Simon L. Peyton Jones. 2009. Types Are Calling Conventions. In Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell (Edinburgh, Scotland) ( Haskell '09). ACM, 1-12."},{"key":"e_1_2_2_4_1","first-page":"34","volume-title":"Call Arity. In Trends in Functional Programming-15th International Symposium, TFP 2014","author":"Breitner Joachim","year":"2014","unstructured":"Joachim Breitner . 2014 . Call Arity. In Trends in Functional Programming-15th International Symposium, TFP 2014 , Soesterberg, The Netherlands , May 26-28, 2014. Revised Selected Papers. 34 - 50 . Joachim Breitner. 2014. Call Arity. In Trends in Functional Programming-15th International Symposium, TFP 2014, Soesterberg, The Netherlands, May 26-28, 2014. Revised Selected Papers. 34-50."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796816000150"},{"key":"e_1_2_2_6_1","doi-asserted-by":"crossref","unstructured":"Zaynah Dargaye and Xavier Leroy. 2009. A verified framework for higher-order uncurrying optimizations. Higher-Order and Symbolic Computation 22 3 ( 2009 ) 199-231.  Zaynah Dargaye and Xavier Leroy. 2009. A verified framework for higher-order uncurrying optimizations. Higher-Order and Symbolic Computation 22 3 ( 2009 ) 199-231.","DOI":"10.1007\/s10990-010-9050-z"},{"key":"e_1_2_2_7_1","volume-title":"27th EACSL Annual Conference on Computer Science Logic, CSL 2018","author":"Downen Paul","year":"2018","unstructured":"Paul Downen and Zena M. Ariola . 2018. Beyond Polarity: Towards a Multi-Discipline Intermediate Language with Sharing . In 27th EACSL Annual Conference on Computer Science Logic, CSL 2018 , September 4-7, 2018 , Birmingham, UK. 21 : 1-21 : 23. Paul Downen and Zena M. Ariola. 2018. Beyond Polarity: Towards a Multi-Discipline Intermediate Language with Sharing. In 27th EACSL Annual Conference on Computer Science Logic, CSL 2018, September 4-7, 2018, Birmingham, UK. 21 : 1-21 : 23."},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3331545.3342594"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2784731.2784744"},{"key":"e_1_2_2_10_1","unstructured":"Richard Eisenberg. 2019. GHC Proposal 29: revised levity polymorphism. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/ blob\/master\/proposals\/0029-levity-polymorphism.rst  Richard Eisenberg. 2019. GHC Proposal 29: revised levity polymorphism. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/ blob\/master\/proposals\/0029-levity-polymorphism.rst"},{"key":"e_1_2_2_11_1","first-page":"525","volume-title":"Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017","author":"Richard","year":"2017","unstructured":"Richard A. Eisenberg and Simon Peyton Jones. 2017. Levity polymorphism . In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017 , Barcelona, Spain , June 18-23, 2017 . 525 - 539 . Richard A. Eisenberg and Simon Peyton Jones. 2017. Levity polymorphism. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017, Barcelona, Spain, June 18-23, 2017. 525-539."},{"key":"e_1_2_2_12_1","unstructured":"Sebastian Graf. 2020. GHC Proposal 265: unlifted data types. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0265-unlifted-datatypes.rst  Sebastian Graf. 2020. GHC Proposal 265: unlifted data types. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0265-unlifted-datatypes.rst"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/268946.268947"},{"key":"e_1_2_2_14_1","doi-asserted-by":"crossref","unstructured":"Jean-Louis Krivine. 2007. A Call-By-Name Lambda-Calculus Machine. Higher-Order and Symbolic Computation 20 3 ( 2007 ) 199-207.  Jean-Louis Krivine. 2007. A Call-By-Name Lambda-Calculus Machine. Higher-Order and Symbolic Computation 20 3 ( 2007 ) 199-207.","DOI":"10.1007\/s10990-007-9018-9"},{"key":"e_1_2_2_16_1","unstructured":"Xavier Leroy. 1990. The ZINC experiment: an economical implementation of the ML language. Technical report 117. INRIA.  Xavier Leroy. 1990. The ZINC experiment: an economical implementation of the ML language. Technical report 117. INRIA."},{"key":"e_1_2_2_17_1","volume-title":"Queen Mary and Westfield College","author":"Levy Paul Blain","unstructured":"Paul Blain Levy . 2001. Call-By-Push-Value. Ph.D. Dissertation . Queen Mary and Westfield College , University of London. Paul Blain Levy. 2001. Call-By-Push-Value. Ph.D. Dissertation. Queen Mary and Westfield College, University of London."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1016850.1016856"},{"key":"e_1_2_2_19_1","unstructured":"Andrew Martin. 2019a. GHC Proposal 112: unlifted arrays. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0112-unlifted-array.rst  Andrew Martin. 2019a. GHC Proposal 112: unlifted arrays. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0112-unlifted-array.rst"},{"key":"e_1_2_2_20_1","unstructured":"Andrew Martin. 2019b. GHC Proposal 203: pointer rep. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0203-pointer-rep.rst  Andrew Martin. 2019b. GHC Proposal 203: pointer rep. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0203-pointer-rep.rst"},{"key":"e_1_2_2_21_1","unstructured":"Andrew Martin. 2019c. GHC Proposal 98: unlifted newtypes. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0098-unlifted-newtypes.rst  Andrew Martin. 2019c. GHC Proposal 98: unlifted newtypes. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/master\/ proposals\/0098-unlifted-newtypes.rst"},{"key":"e_1_2_2_22_1","volume-title":"Reasoning About Efectful Programs and Evaluation Order","author":"McDermott Dylan","unstructured":"Dylan McDermott and Alan Mycroft . 2019. Extended Call-by- Push-Value : Reasoning About Efectful Programs and Evaluation Order . In Programming Languages and Systems, Lu\u00eds Caires (Ed.). Springer International Publishing , Cham , 235-262. Dylan McDermott and Alan Mycroft. 2019. Extended Call-by-Push-Value : Reasoning About Efectful Programs and Evaluation Order. In Programming Languages and Systems, Lu\u00eds Caires (Ed.). Springer International Publishing, Cham, 235-262."},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-04027-6_30"},{"key":"e_1_2_2_25_1","article-title":"Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-machine","volume":"2","author":"Peyton Jones Simon L.","year":"1992","unstructured":"Simon L. Peyton Jones . 1992 . Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-machine . Journal of Functional Programming 2 , 2 ( 1992 ), 127-202. Simon L. Peyton Jones. 1992. Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-machine. Journal of Functional Programming 2, 2 ( 1992 ), 127-202.","journal-title":"Journal of Functional Programming"},{"key":"e_1_2_2_26_1","first-page":"636","volume-title":"Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture. Springer-Verlag","author":"Simon","unstructured":"Simon L. Peyton Jones and John Launchbury. 1991. Unboxed Values As First Class Citizens in a Non-Strict Functional Language . In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture. Springer-Verlag , London, UK, UK , 636 - 666 . Simon L. Peyton Jones and John Launchbury. 1991. Unboxed Values As First Class Citizens in a Non-Strict Functional Language. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture. Springer-Verlag, London, UK, UK, 636-666."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01019462"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/267959.269968"},{"key":"e_1_2_2_29_1","unstructured":"Alex Theriault. 2019. GHC Proposal 209: levity-polymorphic Lift. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/ master\/proposals\/0209-levity-polymorphic-lift.rst  Alex Theriault. 2019. GHC Proposal 209: levity-polymorphic Lift. https:\/\/github.com\/ghc-proposals\/ghc-proposals\/blob\/ master\/proposals\/0209-levity-polymorphic-lift.rst"},{"key":"e_1_2_2_30_1","volume-title":"Proceedings of the Standard ML Workshop.","author":"Wadler Philip","year":"1998","unstructured":"Philip Wadler , Walid Taha , and David Macqueen . 1998 . How to add laziness to a strict language without even being odd . In Proceedings of the Standard ML Workshop. Philip Wadler, Walid Taha, and David Macqueen. 1998. How to add laziness to a strict language without even being odd. In Proceedings of the Standard ML Workshop."},{"key":"e_1_2_2_31_1","volume-title":"System FC with Explicit Kind Equality. In International Conference on Functional Programming","author":"Weirich Stephanie","unstructured":"Stephanie Weirich , Justin Hsu , and Richard A. Eisenberg . 2013 . System FC with Explicit Kind Equality. In International Conference on Functional Programming ( Boston, Massachusetts, USA) ( ICFP '13). ACM. Stephanie Weirich, Justin Hsu, and Richard A. Eisenberg. 2013. System FC with Explicit Kind Equality. In International Conference on Functional Programming (Boston, Massachusetts, USA) ( ICFP '13). ACM."},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.apal.2008.01.001"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3408986","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3408986","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3408986","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:47:59Z","timestamp":1750193279000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3408986"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,8,2]]},"references-count":30,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2020,8,2]]}},"alternative-id":["10.1145\/3408986"],"URL":"https:\/\/doi.org\/10.1145\/3408986","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,8,2]]},"assertion":[{"value":"2020-08-03","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}