{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:55:27Z","timestamp":1750308927899,"version":"3.41.0"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"5","license":[{"start":{"date-parts":[[2004,9,1]],"date-time":"2004-09-01T00:00:00Z","timestamp":1093996800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2004,9]]},"abstract":"<jats:p>Typed object calculi that permit adding new methods to existing objects must address the problem of name clashes: what happens if a new method is added to an object already having one with the same name but a different type? Most systems statically forbid such clashes by restricting the allowable subtypings. In contrast, by reconsidering the runtime meaning of object extension, the object calculus studied in the author's previous work with Jon Riecke allowed any object to be soundly extended with any method of any name, with unrestricted width subtyping. That language permitted a simple encoding of classes as object-generators. Because of width subtyping, subclasses could be typechecked and compiled with little knowledge of the class hierarchy and without any information about superclasses' private components; this made derived classes more robust to changes in the implementations of base classes. However, the system was not well suited for encoding mixins or by-name subtyping of objects.This article addresses those deficiencies by presenting the Calculus of Objects and Indices (COI), a lower-level typed object calculus in which extensible objects are more analogous to tuples than to records. An object is simply a finite sequence of unnamed components referenced by their index in the sequence. Names are then reintroduced by allowing these indices to be first-class values (analogous to pointers to members in C++) that can be bound to variables. Since variables---unlike record labels---freely alpha-vary, difficulties caused by statically undetectable name clashes disappear.By combining COI objects with standard type-theoretic mechanisms, one can encode mixins and classes having the by-name subtyping of languages like C++ or Java but with the robustness of the object-generator encodings. Using records, more standard extensible objects with named components can also be encoded.<\/jats:p>","DOI":"10.1145\/1018203.1018206","type":"journal-article","created":{"date-parts":[[2004,10,7]],"date-time":"2004-10-07T17:38:56Z","timestamp":1097170736000},"page":"805-835","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Extensible objects without labels"],"prefix":"10.1145","volume":"26","author":[{"given":"Christopher A.","family":"Stone","sequence":"first","affiliation":[{"name":"Harvey Mudd College, Claremont, CA"}]}],"member":"320","published-online":{"date-parts":[[2004,9]]},"reference":[{"doi-asserted-by":"publisher","key":"e_1_2_1_1_1","DOI":"10.1017\/S0956796800001052"},{"doi-asserted-by":"crossref","unstructured":"Abadi M. and Cardelli L. 1996. A Theory of Objects. Springer-Verlag.]]   Abadi M. and Cardelli L. 1996. A Theory of Objects. Springer-Verlag.]]","key":"e_1_2_1_2_1","DOI":"10.1007\/978-1-4419-8598-9"},{"volume-title":"Fifteenth Conference on the Mathematical Foundations of Programming Semantics.]]","author":"Bono V.","key":"e_1_2_1_3_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_4_1","DOI":"10.1145\/97945.97982"},{"unstructured":"Bruce K. B. 1997. Increasing Java's expressiveness with This Type and match-bounded polymorphism. Tech. rep. Williams College.]]  Bruce K. B. 1997. Increasing Java's expressiveness with This Type and match-bounded polymorphism. Tech. rep. Williams College.]]","key":"e_1_2_1_5_1"},{"volume-title":"Proceedings of the Fifth Conference on the Mathematical Foundations of Programming Semantics. Springer Verlag.]]","author":"Cardelli L.","key":"e_1_2_1_6_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_7_1","DOI":"10.5555\/646150.679216"},{"doi-asserted-by":"publisher","key":"e_1_2_1_8_1","DOI":"10.1145\/289423.289459"},{"unstructured":"Crary K. F. 1998. Type-theoretic methodology for practical programming languages. Ph.D. thesis Department of Computer Science Cornell University.]]   Crary K. F. 1998. Type-theoretic methodology for practical programming languages. Ph.D. thesis Department of Computer Science Cornell University.]]","key":"e_1_2_1_9_1"},{"volume":"276","volume-title":"Proceedings of ECOOP '87 European Conference On Object-Oriented Programming, B\u00e9zivin, Hullot, Cointe, and Lieberman, Eds. LNCS","author":"DeMichiel L. G.","key":"e_1_2_1_10_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_11_1","DOI":"10.1145\/286936.286955"},{"key":"e_1_2_1_12_1","first-page":"3","article-title":"A lambda calculus of objects and method specialization","volume":"1","author":"Fisher K.","year":"1994","journal-title":"Nordic J. Comput."},{"doi-asserted-by":"crossref","unstructured":"Fisher K.\n     and \n      \n      \n      Mitchell J. C\n      \n  \n  . \n  1995\n  . A delegation-based object calculus with subtyping. In Fundamentals of Computation Theory (FCT'95). Number 965 in \n  Lecture Notes in Computer Science\n  . \n  Springer-Verlag 42--61.]]   Fisher K. and Mitchell J. C. 1995. A delegation-based object calculus with subtyping. In Fundamentals of Computation Theory (FCT'95). Number 965 in Lecture Notes in Computer Science. Springer-Verlag 42--61.]]","key":"e_1_2_1_13_1","DOI":"10.1007\/3-540-60249-6_40"},{"doi-asserted-by":"publisher","key":"e_1_2_1_14_1","DOI":"10.1002\/(SICI)1096-9942(1998)4:1%3C3::AID-TAPO2%3E3.3.CO;2-2"},{"volume-title":"14th European Conference on Object-Oriented Programming.","year":"1850","author":"Fisher K.","key":"e_1_2_1_15_1"},{"volume-title":"European Symposium on Programming. 135--149","author":"Fisher K.","key":"e_1_2_1_16_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_17_1","DOI":"10.1145\/268946.268961"},{"unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification Second Edition. Addison-Wesley.]]   Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification Second Edition. Addison-Wesley.]]","key":"e_1_2_1_18_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_19_1","DOI":"10.1145\/199448.199475"},{"doi-asserted-by":"publisher","key":"e_1_2_1_20_1","DOI":"10.1145\/317636.317798"},{"unstructured":"Lippman S. B. 1996. Inside the C++ Object Model. Addison-Wesley.]]   Lippman S. B. 1996. Inside the C++ Object Model. Addison-Wesley.]]","key":"e_1_2_1_21_1"},{"volume-title":"Proceedings of ECOOP-97, International European Conference on Object Oriented Programming","author":"Liquori L.","series-title":"Lecture Notes in Computer Science","key":"e_1_2_1_22_1"},{"doi-asserted-by":"crossref","unstructured":"Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (Revised). MIT Press.]]   Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (Revised). MIT Press.]]","key":"e_1_2_1_23_1","DOI":"10.7551\/mitpress\/2319.001.0001"},{"unstructured":"Morrisett G. 1995. Compiling with Types. Ph.D. thesis Carnegie Mellon University School of Computer Science. Available as CMU Tech. Rep. CMU-CS-95-226.]]  Morrisett G. 1995. Compiling with Types. Ph.D. thesis Carnegie Mellon University School of Computer Science. Available as CMU Tech. Rep. CMU-CS-95-226.]]","key":"e_1_2_1_24_1"},{"unstructured":"Nelson G. Ed. 1991. Systems Programming with Modula-3. Prentice Hall.]]   Nelson G. Ed. 1991. Systems Programming with Modula-3. Prentice Hall.]]","key":"e_1_2_1_25_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_26_1","DOI":"10.1145\/218570.218572"},{"unstructured":"Pierce B. C. 2002. Types and Programming Languages. MIT Press.]]   Pierce B. C. 2002. Types and Programming Languages. MIT Press.]]","key":"e_1_2_1_27_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_28_1","DOI":"10.1145\/158511.158653"},{"doi-asserted-by":"publisher","key":"e_1_2_1_29_1","DOI":"10.1145\/231379.231412"},{"volume-title":"Fifth International Workshop on Foundations of Object-Oriented Programming (FOOL 5).]]","author":"Riecke J. C.","key":"e_1_2_1_30_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_31_1","DOI":"10.1006\/inco.2000.2925"},{"unstructured":"Stroustrup B. 1997. The C++ Programming Language. Addison-Wesley.]]   Stroustrup B. 1997. The C++ Programming Language. Addison-Wesley.]]","key":"e_1_2_1_32_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_33_1","DOI":"10.1145\/360204.360233"},{"volume-title":"Tech. Rep. TR91-160, Department of Computer Science","year":"1991","author":"Wright A.","key":"e_1_2_1_34_1"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1018203.1018206","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1018203.1018206","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:36:46Z","timestamp":1750282606000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1018203.1018206"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2004,9]]},"references-count":34,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2004,9]]}},"alternative-id":["10.1145\/1018203.1018206"],"URL":"https:\/\/doi.org\/10.1145\/1018203.1018206","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2004,9]]},"assertion":[{"value":"2004-09-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}