{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:57:17Z","timestamp":1776891437898,"version":"3.51.2"},"reference-count":38,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","license":[{"start":{"date-parts":[[2017,2,16]],"date-time":"2017-02-16T00:00:00Z","timestamp":1487203200000},"content-version":"unspecified","delay-in-days":46,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2017]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    Since the mid '80s, compiler writers for functional languages (especially lazy ones) have been writing papers about identifying and exploiting thunks and lambdas that are used only once. However, it has proved difficult to achieve both power and simplicity in practice. In this paper, we describe a new, modular analysis for a higher order language, which is both simple and effective. We prove the analysis sound with respect to a standard call-by-need semantics, and present measurements of its use in a full-scale, state-of-the-art optimising compiler. The analysis finds many single-entry thunks and one-shot lambdas and enables a number of program optimisations. This paper extends our preceding conference publication (Sergey\n                    <jats:italic>et al.<\/jats:italic>\n                    2014\n                    <jats:italic>Proceedings of the 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2014)<\/jats:italic>\n                    . ACM, pp. 335\u2013348) with proofs, expanded report on evaluation and a detailed examination of the factors causing the loss of precision in the analysis.\n                  <\/jats:p>","DOI":"10.1017\/s0956796817000016","type":"journal-article","created":{"date-parts":[[2017,2,16]],"date-time":"2017-02-16T02:28:08Z","timestamp":1487212088000},"source":"Crossref","is-referenced-by-count":5,"title":["Modular, higher order cardinality analysis in theory and practice"],"prefix":"10.46298","volume":"27","author":[{"given":"ILYA","family":"SERGEY","sequence":"first","affiliation":[]},{"given":"DIMITRIOS","family":"VYTINIOTIS","sequence":"additional","affiliation":[]},{"given":"SIMON L. PEYTON","family":"JONES","sequence":"additional","affiliation":[]},{"given":"JOACHIM","family":"BREITNER","sequence":"additional","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2017,2,16]]},"reference":[{"key":"S0956796817000016_ref11","doi-asserted-by":"publisher","DOI":"10.1145\/1291151.1291189"},{"key":"S0956796817000016_ref19","volume-title":"Workshops in Computing","author":"Launchbury","year":"1993"},{"key":"S0956796817000016_ref25","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4471-3236-3_17"},{"key":"S0956796817000016_ref6","doi-asserted-by":"crossref","first-page":"223","DOI":"10.1145\/165180.165214","volume-title":"Proceedings of the 6th ACM Conference on Functional Programming Languages and Computer Architecture","author":"Gill","year":"1993"},{"key":"S0956796817000016_ref14","doi-asserted-by":"publisher","DOI":"10.1145\/1706356.1706379"},{"key":"S0956796817000016_ref22","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292547"},{"key":"S0956796817000016_ref33","doi-asserted-by":"publisher","DOI":"10.1145\/1863543.1863553"},{"key":"S0956796817000016_ref8","volume-title":"Functional Programming Languages and Ccomputer Architecture","author":"Goldberg","year":"1987"},{"key":"S0956796817000016_ref29","doi-asserted-by":"publisher","DOI":"10.1145\/2535838.2535861"},{"key":"S0956796817000016_ref37","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292545"},{"key":"S0956796817000016_ref5","unstructured":"Gill A. (1996) Cheap Deforestation for Non-Strict Functional Languages. PhD Thesis, University of Glasgow, Department of Computer Science."},{"key":"S0956796817000016_ref12","first-page":"395","volume-title":"Proceedings of the 1st International Static Analysis Symposium (SAS'94)","author":"Henglein","year":"1994"},{"key":"S0956796817000016_ref15","doi-asserted-by":"publisher","DOI":"10.1145\/319838.319876"},{"key":"S0956796817000016_ref20","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806005995"},{"key":"S0956796817000016_ref24","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000319"},{"key":"S0956796817000016_ref3","first-page":"35","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Haskell","author":"Breitner","year":"2015"},{"key":"S0956796817000016_ref21","volume-title":"Proceedings of the 11th ACM SIGPLAN International Conference on Functional Programming (ICFP 2006)","author":"Might","year":"2006"},{"key":"S0956796817000016_ref18","volume-title":"Workshops in Computing","author":"Launchbury","year":"1993"},{"key":"S0956796817000016_ref26","first-page":"1","volume-title":"Proceedings of the 1st ACM SIGPLAN International Conference on Functional Programming (ICFP'96)","author":"Peyton Jones","year":"1996"},{"key":"S0956796817000016_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/289423.289427"},{"key":"S0956796817000016_ref1","doi-asserted-by":"crossref","first-page":"579","DOI":"10.1017\/S0960129500070109","article-title":"Uniqueness typing for functional languages with graph rewriting semantics.","volume":"6","author":"Barendsen","year":"1996","journal-title":"Math. Struct. Comput. Sci."},{"key":"S0956796817000016_ref34","doi-asserted-by":"crossref","first-page":"139","DOI":"10.1145\/2678015.2682536","volume-title":"Proceedings of the 2015 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2015)","author":"Verstoep","year":"2015"},{"key":"S0956796817000016_ref2","doi-asserted-by":"crossref","first-page":"34","DOI":"10.1007\/978-3-319-14675-1_3","volume-title":"Trends in functional programming","author":"Breitner","year":"2015"},{"key":"S0956796817000016_ref30","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002712"},{"key":"S0956796817000016_ref38","unstructured":"Xu D. & Peyton Jones S. L. (2005) Arity Analysis. Unpublished draft."},{"key":"S0956796817000016_ref13","unstructured":"Hinze R. (1995) Projection-Based Strictness Analysis - Theoretical and Practical Aspects. PhD Thesis, Bonn University."},{"key":"S0956796817000016_ref32","first-page":"1","volume-title":"Proceedings of the 7th ACP Conference on Functional Programming Languages and Computer Architecture","author":"Turner","year":"1995"},{"key":"S0956796817000016_ref7","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511629150"},{"key":"S0956796817000016_ref4","unstructured":"Breitner J. (2016) Lazy Evaluation: From Natural Semantics to a Machine-Checked Compiler Transformation. PhD Thesis, Karlsruhe Institute of Technology."},{"key":"S0956796817000016_ref17","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-18317-5"},{"key":"S0956796817000016_ref27","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(97)00029-4"},{"key":"S0956796817000016_ref10","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45361-X_9"},{"key":"S0956796817000016_ref31","doi-asserted-by":"publisher","DOI":"10.1016\/S0304-3975(99)00054-7"},{"key":"S0956796817000016_ref16","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000277"},{"key":"S0956796817000016_ref28","doi-asserted-by":"publisher","DOI":"10.1145\/141471.141563"},{"key":"S0956796817000016_ref35","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-18317-5_21"},{"key":"S0956796817000016_ref36","unstructured":"Wansbrough K. (2002) Simple Polymorphic Usage Analysis. PhD Thesis, Computer Laboratory, University of Cambridge."},{"key":"S0956796817000016_ref23","volume-title":"Workshops in Computing","author":"Partain","year":"1993"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796817000016","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:19:50Z","timestamp":1776889190000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796817000016\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017]]},"references-count":38,"alternative-id":["S0956796817000016"],"URL":"https:\/\/doi.org\/10.1017\/s0956796817000016","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017]]},"article-number":"e11"}}