{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,15]],"date-time":"2025-11-15T04:03:20Z","timestamp":1763179400347,"version":"3.41.0"},"reference-count":65,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2022,9,21]],"date-time":"2022-09-21T00:00:00Z","timestamp":1663718400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2022,12,31]]},"abstract":"<jats:p>\n            To let expressions evaluate to no or many objects, most object-oriented programming languages require the use of special constructs that encode these cases as single objects or values. While the requirement to treat these standard situations idiomatically seems to be broadly accepted, I argue that its alternative, letting expressions evaluate to any number of objects directly, has several advantages that make it worthy of consideration. As a proof of concept, I present a core object-oriented programming language, dubbed\n            <jats:sc>Num<\/jats:sc>\n            , which separates number from type so that the type of an expression is independent of the number of objects it may evaluate to, thus removing one major obstacle to using no, one, and many objects uniformly. Furthermore,\n            <jats:sc>Num<\/jats:sc>\n            abandons null references, replaces the nullability of reference types with the more general notion of countability, and allows methods to be invoked on any number of objects, including no object. To be able to adapt behavior to the actual number of receivers,\n            <jats:sc>Num<\/jats:sc>\n            complements instance methods with plural methods, that is, with methods that operate on a number of objects jointly and that replace static methods known from other languages. An implementation of\n            <jats:sc>Num<\/jats:sc>\n            in Prolog and accompanying type and number safety proofs are presented.\n          <\/jats:p>","DOI":"10.1145\/3527635","type":"journal-article","created":{"date-parts":[[2022,4,21]],"date-time":"2022-04-21T12:50:31Z","timestamp":1650545431000},"page":"1-56","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Containerless Plurals: Separating Number from Type in Object-Oriented Programming"],"prefix":"10.1145","volume":"44","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8887-134X","authenticated-orcid":false,"given":"Friedrich","family":"Steimann","sequence":"first","affiliation":[{"name":"Fernuniversit\u00e4t in Hagen, Hagen, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2022,9,21]]},"reference":[{"key":"e_1_3_4_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009866"},{"key":"e_1_3_4_3_2","volume-title":"The Java Programming Language, Third Edition","author":"Arnold Ken","year":"2000","unstructured":"Ken Arnold, James Gosling, and David Holmes. 2000. The Java Programming Language, Third Edition. Addison-Wesley."},{"key":"e_1_3_4_4_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-22655-7_17"},{"key":"e_1_3_4_5_2","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_13"},{"key":"e_1_3_4_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297063"},{"key":"e_1_3_4_7_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-14107-2_5"},{"key":"e_1_3_4_8_2","volume-title":"MJ: An Imperative Core Calculus for Java and Java with Effects","author":"Bierman Gavin M.","year":"2003","unstructured":"Gavin M. Bierman, M. J. Parkinson, and A. M. Pitts. 2003. MJ: An Imperative Core Calculus for Java and Java with Effects. Technical Report UCAM-CL-TR-563. University of Cambridge, Computer Laboratory."},{"key":"e_1_3_4_9_2","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_12"},{"key":"e_1_3_4_10_2","article-title":"Encapsulating non-determinism in functional logic computations","volume":"2004","author":"Bra\u00dfel Bernd","year":"2004","unstructured":"Bernd Bra\u00dfel, Michael Hanus, and Frank Huch. 2004. Encapsulating non-determinism in functional logic computations. J. Funct. Log. Program. 2004 (2004), 1\u201328. Retrieved from http:\/\/danae.uni-muenster.de\/lehre\/kuchen\/JFLP\/articles\/2004\/S04-01\/A2004-06\/JFLP-A2004-06.pdf.","journal-title":"J. Funct. Log. Program."},{"key":"e_1_3_4_11_2","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1987.1663532"},{"issue":"3","key":"e_1_3_4_12_2","first-page":"221","article-title":"On binary methods","volume":"1","author":"Bruce Kim B.","year":"1995","unstructured":"Kim B. Bruce, Luca Cardelli, Giuseppe Castagna, Jonathan Eifrig, Scott F. Smith, Valery Trifonov, Gary T. Leavens, and Benjamin C. Pierce. 1995. On binary methods. TAPOS 1, 3 (1995), 221\u2013242.","journal-title":"TAPOS"},{"key":"e_1_3_4_13_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-30982-3_3"},{"key":"e_1_3_4_14_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF01446819"},{"key":"e_1_3_4_15_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-37036-6_3"},{"key":"e_1_3_4_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/320434.320440"},{"key":"e_1_3_4_17_2","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2016.6"},{"key":"e_1_3_4_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/514952.514955"},{"key":"e_1_3_4_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/1111037.1111062"},{"key":"e_1_3_4_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949332"},{"key":"e_1_3_4_21_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48737-9_7"},{"key":"e_1_3_4_22_2","volume-title":"Refactoring - Improving the Design of Existing Code","author":"Fowler Martin","year":"1999","unstructured":"Martin Fowler. 1999. Refactoring - Improving the Design of Existing Code. Addison-Wesley. Retrieved from http:\/\/martinfowler.com\/books\/refactoring.html."},{"key":"e_1_3_4_23_2","volume-title":"Domain-Specific Languages","author":"Fowler Martin","year":"2011","unstructured":"Martin Fowler. 2011. Domain-Specific Languages. Addison-Wesley. Retrieved form http:\/\/vig.pearsoned.com\/store\/product\/1,1207,store-12521_isbn-0321712943,00.html."},{"key":"e_1_3_4_24_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-54434-1_21"},{"key":"e_1_3_4_25_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-11245-9_14"},{"key":"e_1_3_4_26_2","doi-asserted-by":"publisher","DOI":"10.4233\/uuid:5e9805ca-95d0-451e-a8f0-55decb26c94a"},{"key":"e_1_3_4_27_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4419-8596-5"},{"key":"e_1_3_4_28_2","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(81)90071-5"},{"key":"e_1_3_4_29_2","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(05)80692-9"},{"key":"e_1_3_4_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/503502.503505"},{"key":"e_1_3_4_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28732"},{"key":"e_1_3_4_32_2","doi-asserted-by":"publisher","DOI":"10.5555\/1098666"},{"key":"e_1_3_4_33_2","volume-title":"Software Abstractions - Logic, Language, and Analysis","author":"Jackson Daniel","year":"2006","unstructured":"Daniel Jackson. 2006. Software Abstractions - Logic, Language, and Analysis. MIT Press. Retrieved from http:\/\/mitpress.mit.edu\/catalog\/item\/default.asp?ttype=2&tid=10928."},{"key":"e_1_3_4_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/1146811"},{"key":"e_1_3_4_35_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_4"},{"key":"e_1_3_4_36_2","doi-asserted-by":"publisher","DOI":"10.1016\/0169-023X(93)90024-J"},{"key":"e_1_3_4_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/2001269.2001285"},{"key":"e_1_3_4_38_2","volume-title":"Proceedings of Declarative Programming in the Context of OO Languages","author":"Meijer Erik","year":"2003","unstructured":"Erik Meijer, Wolfram Schulte, and Gavin M. Bierman. 2003. Unifying tables, objects and documents. In Proceedings of Declarative Programming in the Context of OO Languages. Retrieved from http:\/\/research.microsoft.com\/apps\/pubs\/default.aspx?id=79586."},{"key":"e_1_3_4_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970322"},{"volume-title":"C# Language Specification (5th Edition)","year":"2017","key":"e_1_3_4_40_2","unstructured":"Microsoft. 2017. C# Language Specification (5th Edition). Standard ECMA-334:2017. European Computer Manufacturers Association, Geneva, CH. Retrieved from https:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-334.pdf."},{"key":"e_1_3_4_41_2","volume-title":"Concepts in Programming Languages","author":"Mitchell John C.","year":"2003","unstructured":"John C. Mitchell. 2003. Concepts in Programming Languages. Cambridge University Press."},{"key":"e_1_3_4_42_2","doi-asserted-by":"publisher","DOI":"10.1007\/PL00013316"},{"key":"e_1_3_4_43_2","doi-asserted-by":"publisher","DOI":"10.1145\/268946.268960"},{"key":"e_1_3_4_44_2","first-page":"73","volume-title":"Proceedings of the Pattern Languages of Program Design","volume":"4","author":"Noble James","year":"2000","unstructured":"James Noble. 2000. Basic relationship patterns. In Proceedings of the Pattern Languages of Program Design, Neil Harrison, Brian Foote, and Hans Rohnert (Eds.), Vol. 4. Addison-Wesley, 73\u201389."},{"key":"e_1_3_4_45_2","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0054091"},{"key":"e_1_3_4_46_2","volume-title":"Unified Modeling Language 2.4.1","author":"Group) OMG (Object Management","year":"2011","unstructured":"OMG (Object Management Group). 2011. Unified Modeling Language 2.4.1. Specification. OMG (Object Management Group). Retrieved from http:\/\/www.omg.org\/spec\/UML\/2.4.1\/."},{"key":"e_1_3_4_47_2","volume-title":"Object Constraint Language 2.4","author":"Group) OMG (Object Management","year":"2012","unstructured":"OMG (Object Management Group). 2012. Object Constraint Language 2.4. Specification. OMG (Object Management Group). Retrieved from http:\/\/www.omg.org\/spec\/OCL\/."},{"key":"e_1_3_4_48_2","doi-asserted-by":"publisher","DOI":"10.5555\/509043"},{"key":"e_1_3_4_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38850"},{"key":"e_1_3_4_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/62083.62109"},{"key":"e_1_3_4_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/1394127.1394139"},{"key":"e_1_3_4_52_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_9"},{"key":"e_1_3_4_53_2","article-title":"Type Safety in Three Easy Lemmas","author":"Siek Jeremy","year":"2013","unstructured":"Jeremy Siek. 2013. Type Safety in Three Easy Lemmas. Blog Post. Retrieved from http:\/\/siek.blogspot.com\/2013\/05\/type-safety-in-three-easy-lemmas.html.","journal-title":"Blog Post"},{"key":"e_1_3_4_54_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-54833-8_3"},{"key":"e_1_3_4_55_2","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/35.5.514"},{"key":"e_1_3_4_56_2","first-page":"1","volume-title":"Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming","author":"Jr. Guy L. Steele,","year":"2017","unstructured":"Guy L. Steele, Jr.2017. It\u2019s time for a new old language. In Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Vivek Sarkar and Lawrence Rauchwerger (Eds.). ACM, 1. Retrieved from https:\/\/www.youtube.com\/watch?v=7HKbjYqqPPQ(abstract of the keynote; quote is from the video recording)."},{"key":"e_1_3_4_57_2","doi-asserted-by":"publisher","DOI":"10.1145\/2509578.2509582"},{"key":"e_1_3_4_58_2","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.SNAPL.2015.294"},{"key":"e_1_3_4_59_2","doi-asserted-by":"publisher","DOI":"10.1145\/3486607.3486771"},{"key":"e_1_3_4_60_2","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2014.13.5.a1"},{"key":"e_1_3_4_61_2","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048142"},{"key":"e_1_3_4_62_2","doi-asserted-by":"publisher","DOI":"10.5555\/1869905"},{"key":"e_1_3_4_63_2","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2004.3.11.a5"},{"key":"e_1_3_4_64_2","doi-asserted-by":"publisher","DOI":"10.1145\/1869542.1869546"},{"key":"e_1_3_4_65_2","doi-asserted-by":"publisher","DOI":"10.1145\/321978.321991"},{"key":"e_1_3_4_66_2","doi-asserted-by":"publisher","DOI":"10.1145\/143165.143169"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3527635","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3527635","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:53Z","timestamp":1750191533000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3527635"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,9,21]]},"references-count":65,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2022,12,31]]}},"alternative-id":["10.1145\/3527635"],"URL":"https:\/\/doi.org\/10.1145\/3527635","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2022,9,21]]},"assertion":[{"value":"2020-07-24","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-12-25","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-09-21","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}