{"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":1750308927910,"version":"3.41.0"},"reference-count":49,"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>One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so that datatype variants simulate classes and function cases simulate methods. This approach allows existing datatypes to be easily extended with both new operations and new variants, resolving a longstanding conflict between the functional and OO styles. However, previous designs based on this approach have been forced to give up<jats:italic>modular<\/jats:italic>typechecking, requiring whole-program checks to ensure type safety. We describe Extensible ML (EML), an ML-like language that supports hierarchical, extensible datatypes and functions while preserving purely modular typechecking. To achieve this result,EML's type system imposes a few requirements on datatype and function extensibility, but EML is still able to express both traditional functional and OO idioms. We have formalized a core version of EML and proven the associated type system sound, and we have developed a prototype interpreter for the language.<\/jats:p>","DOI":"10.1145\/1018203.1018207","type":"journal-article","created":{"date-parts":[[2004,10,7]],"date-time":"2004-10-07T17:38:56Z","timestamp":1097170736000},"page":"836-889","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["Modular typechecking for hierarchically extensible datatypes and functions"],"prefix":"10.1145","volume":"26","author":[{"given":"Todd","family":"Millstein","sequence":"first","affiliation":[{"name":"University of California, Los Angeles, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Colin","family":"Bleckner","sequence":"additional","affiliation":[{"name":"University of Washington, Seattle, WA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Craig","family":"Chambers","sequence":"additional","affiliation":[{"name":"University of Washington, Seattle, WA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2004,9]]},"reference":[{"doi-asserted-by":"crossref","unstructured":"Ancona D. Lagorio G. and Zucca E . 2002 . A formal framework for Java separate compilation. In Proceedings of the 2002 European Conference on Object-Oriented Programming Lecture Notes in Computer Science vol. 2374 Malaga Spain (June). Springer-Verlag .]] Ancona D. Lagorio G. and Zucca E. 2002. A formal framework for Java separate compilation. In Proceedings of the 2002 European Conference on Object-Oriented Programming Lecture Notes in Computer Science vol. 2374 Malaga Spain (June). Springer-Verlag.]]","key":"e_1_2_1_1_1","DOI":"10.1007\/3-540-47993-7_26"},{"doi-asserted-by":"crossref","unstructured":"Ancona D. and Zucca E . 2001 . True modules for Java-like languages. In J. L. Knudsen Ed. ECOOP 2001--Object-Oriented Programming Lecture Notes in Computer Science vol. 2072 . Springer .]] Ancona D. and Zucca E. 2001. True modules for Java-like languages. In J. L. Knudsen Ed. ECOOP 2001--Object-Oriented Programming Lecture Notes in Computer Science vol. 2072. Springer.]]","key":"e_1_2_1_2_1","DOI":"10.1007\/3-540-45337-7_19"},{"doi-asserted-by":"publisher","key":"e_1_2_1_3_1","DOI":"10.1017\/S0956796801004257"},{"unstructured":"Arnold K. Gosling J. and Holmes D. 2000. The Java Programming Language Third Edition. Addison-Wesley Reading MA third edition.]] Arnold K. Gosling J. and Holmes D. 2000. The Java Programming Language Third Edition. Addison-Wesley Reading MA third edition.]]","key":"e_1_2_1_4_1"},{"key":"e_1_2_1_5_1","volume-title":"The Ninth International Workshop on Foundations of Object-Oriented Languages, FOOL 9","author":"Bonniot D.","year":"2002","unstructured":"Bonniot , D. 2002 . Type-checking multi-methods in ML (a modular approach) . In The Ninth International Workshop on Foundations of Object-Oriented Languages, FOOL 9 , Portland, Oregon, USA (January).]] Bonniot, D. 2002. Type-checking multi-methods in ML (a modular approach). In The Ninth International Workshop on Foundations of Object-Oriented Languages, FOOL 9, Portland, Oregon, USA (January).]]"},{"doi-asserted-by":"publisher","key":"e_1_2_1_6_1","DOI":"10.1145\/263699.263743"},{"doi-asserted-by":"publisher","key":"e_1_2_1_7_1","DOI":"10.1145\/97945.97982"},{"doi-asserted-by":"publisher","key":"e_1_2_1_8_1","DOI":"10.1016\/0890-5401(88)90007-7"},{"doi-asserted-by":"publisher","key":"e_1_2_1_9_1","DOI":"10.1145\/263699.263735"},{"doi-asserted-by":"publisher","key":"e_1_2_1_10_1","DOI":"10.1145\/6041.6042"},{"doi-asserted-by":"publisher","key":"e_1_2_1_11_1","DOI":"10.1145\/320384.320407"},{"doi-asserted-by":"publisher","key":"e_1_2_1_12_1","DOI":"10.1145\/218570.218571"},{"doi-asserted-by":"publisher","key":"e_1_2_1_13_1","DOI":"10.1145\/353171.353181"},{"volume-title":"Foundations of Object-Oriented Languages, REX School\/Workshop","author":"Cook W. R.","unstructured":"Cook , W. R. 1991. Object-oriented programming versus abstract data types . In J. W. de Bakker, W. P. de Roever, and G. Rozenberg, Eds. Foundations of Object-Oriented Languages, REX School\/Workshop , Noordwijkerhout, The Netherlands, May\/June, LNCS 489, 151--178. Springer-Verlag , New York, NY.]] Cook, W. R. 1991. Object-oriented programming versus abstract data types. In J. W. de Bakker, W. P. de Roever, and G. Rozenberg, Eds. Foundations of Object-Oriented Languages, REX School\/Workshop, Noordwijkerhout, The Netherlands, May\/June, LNCS 489, 151--178. Springer-Verlag, New York, NY.]]","key":"e_1_2_1_14_1"},{"doi-asserted-by":"crossref","unstructured":"Drossopoulou S. Eisenbach S. and Wragg D. 1999. A fragment calculus---towards a model of separate compilation linking and binary compatibility. In Logic in Computer Science 147--156.]] Drossopoulou S. Eisenbach S. and Wragg D. 1999. A fragment calculus---towards a model of separate compilation linking and binary compatibility. In Logic in Computer Science 147--156.]]","key":"e_1_2_1_15_1","DOI":"10.1109\/LICS.1999.782606"},{"doi-asserted-by":"publisher","key":"e_1_2_1_16_1","DOI":"10.1145\/232627.232654"},{"doi-asserted-by":"publisher","key":"e_1_2_1_17_1","DOI":"10.1145\/504282.504299"},{"doi-asserted-by":"crossref","unstructured":"Ernst M. Kaplan C. and Chambers C . 1998 . Predicate dispatching: A unified theory of dispatch. In E. Jul Ed. ECOOP '98--Object-Oriented Programming Lecture Notes in Computer Science vol. 1445 186--211. Springer .]] Ernst M. Kaplan C. and Chambers C. 1998. Predicate dispatching: A unified theory of dispatch. In E. Jul Ed. ECOOP '98--Object-Oriented Programming Lecture Notes in Computer Science vol. 1445 186--211. Springer.]]","key":"e_1_2_1_18_1","DOI":"10.1007\/BFb0054092"},{"doi-asserted-by":"publisher","key":"e_1_2_1_19_1","DOI":"10.1145\/289423.289432"},{"doi-asserted-by":"publisher","key":"e_1_2_1_20_1","DOI":"10.1145\/301618.301638"},{"key":"e_1_2_1_21_1","volume-title":"14th European Conference on Object-Oriented Programming, LNCS","author":"Fisher K.","year":"1850","unstructured":"Fisher , K. and Reppy , J . 2000. Extending Moby with inheritance-based subtyping . In 14th European Conference on Object-Oriented Programming, LNCS 1850 , 83--107 (June).]] Fisher, K. and Reppy, J. 2000. Extending Moby with inheritance-based subtyping. In 14th European Conference on Object-Oriented Programming, LNCS 1850, 83--107 (June).]]"},{"doi-asserted-by":"publisher","key":"e_1_2_1_22_1","DOI":"10.1145\/277650.277730"},{"doi-asserted-by":"publisher","key":"e_1_2_1_23_1","DOI":"10.1145\/268946.268961"},{"doi-asserted-by":"publisher","key":"e_1_2_1_24_1","DOI":"10.1016\/0304-3975(90)90144-7"},{"key":"e_1_2_1_25_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1995","unstructured":"Gamma , E. , Helm , R. , Johnson , R. E. , and Vlissides , J . 1995 . Design Patterns: Elements of Reusable Object-Oriented Software . Addison-Wesley , Massachusetts .]] Gamma, E., Helm, R., Johnson, R. E., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Massachusetts.]]"},{"key":"e_1_2_1_26_1","volume-title":"Workshop on Foundations of Software Engineering, November.]]","author":"Garrigue J.","year":"2000","unstructured":"Garrigue , J. 2000 . Code reuse through polymorphic variants . In Workshop on Foundations of Software Engineering, November.]] Garrigue, J. 2000. Code reuse through polymorphic variants. In Workshop on Foundations of Software Engineering, November.]]"},{"unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification Second Edition. The Java Series. Addison-Wesley Boston Mass.]] Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification Second Edition. The Java Series. Addison-Wesley Boston Mass.]]","key":"e_1_2_1_27_1"},{"doi-asserted-by":"crossref","unstructured":"Hirschowitz T. and Leroy X . 2002 . Mixin modules in a call-by-value setting. In D. Le M\u00e9tayer Ed Programming Languages and Systems ESOP'2002 volume 2305 of Lecture Notes in Computer Science 6--20. Springer-Verlag .]] Hirschowitz T. and Leroy X. 2002. Mixin modules in a call-by-value setting. In D. Le M\u00e9tayer Ed Programming Languages and Systems ESOP'2002 volume 2305 of Lecture Notes in Computer Science 6--20. Springer-Verlag.]]","key":"e_1_2_1_28_1","DOI":"10.1007\/3-540-45927-8_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_29_1","DOI":"10.1145\/199448.199481"},{"doi-asserted-by":"publisher","key":"e_1_2_1_30_1","DOI":"10.1145\/503502.503505"},{"doi-asserted-by":"publisher","key":"e_1_2_1_31_1","DOI":"10.1016\/S0304-3975(96)00163-6"},{"key":"e_1_2_1_32_1","volume-title":"Ed. ECOOP'98--Object-Oriented Programming, 12th European Conference","volume":"1445","author":"Krishnamurthi S.","unstructured":"Krishnamurthi , S. , Felleisen , M. , and Friedman , D. P . 1998. Synthesizing object-oriented and functional design to promote re-use. In E. Jul , Ed. ECOOP'98--Object-Oriented Programming, 12th European Conference , Brussels, Belgium, Lecture Notes in Computer Science , vol. 1445 , 91--113. Springer-Verlag (July).]] Krishnamurthi, S., Felleisen, M., and Friedman, D. P. 1998. Synthesizing object-oriented and functional design to promote re-use. In E. Jul, Ed. ECOOP'98--Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Lecture Notes in Computer Science, vol. 1445, 91--113. Springer-Verlag (July).]]"},{"doi-asserted-by":"publisher","key":"e_1_2_1_33_1","DOI":"10.1145\/800055.802036"},{"doi-asserted-by":"publisher","key":"e_1_2_1_34_1","DOI":"10.1145\/504282.504298"},{"doi-asserted-by":"publisher","key":"e_1_2_1_36_1","DOI":"10.1145\/583852.581489"},{"doi-asserted-by":"crossref","unstructured":"Millstein T. and Chambers C . 1999 . Modular statically typed multimethods. In R. Guerraoui editor ECOOP '99 -- Object-Oriented Programming 13th European Conference Lisbon Portugal Lecture Notes in Computer Science vol. 1628 279--303. Springer-Verlag New York NY (June).]] Millstein T. and Chambers C. 1999. Modular statically typed multimethods. In R. Guerraoui editor ECOOP '99 -- Object-Oriented Programming 13th European Conference Lisbon Portugal Lecture Notes in Computer Science vol. 1628 279--303. Springer-Verlag New York NY (June).]]","key":"e_1_2_1_37_1","DOI":"10.1007\/3-540-48743-3_13"},{"doi-asserted-by":"publisher","key":"e_1_2_1_38_1","DOI":"10.1006\/inco.2002.3103"},{"doi-asserted-by":"crossref","unstructured":"Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (Revised). The MIT Press.]] Milner R. Tofte M. Harper R. and MacQueen D. 1997. The Definition of Standard ML (Revised). The MIT Press.]]","key":"e_1_2_1_39_1","DOI":"10.7551\/mitpress\/2319.001.0001"},{"volume-title":"Systems Programming with Modula-3","author":"Nelson G.","unstructured":"Nelson , G. 1991. Systems Programming with Modula-3 . Prentice Hall .]] Nelson, G. 1991. Systems Programming with Modula-3. Prentice Hall.]]","key":"e_1_2_1_40_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_41_1","DOI":"10.1145\/289423.289445"},{"doi-asserted-by":"publisher","key":"e_1_2_1_42_1","DOI":"10.1145\/263699.263715"},{"doi-asserted-by":"publisher","key":"e_1_2_1_43_1","DOI":"10.1145\/345099.345100"},{"doi-asserted-by":"publisher","key":"e_1_2_1_44_1","DOI":"10.1002\/(SICI)1096-9942(1998)4:1%3C27::AID-TAPO3%3E3.0.CO;2-4"},{"doi-asserted-by":"publisher","key":"e_1_2_1_45_1","DOI":"10.1145\/231379.231412"},{"volume-title":"Programming Methodology, A Collection of Articles by IFIP WG2.3, 309--317","author":"Reynolds J. C.","unstructured":"Reynolds , J. C. 1978. User defined types and procedural data structures as complementary approaches to data abstraction . In D. Gries, editor, Programming Methodology, A Collection of Articles by IFIP WG2.3, 309--317 . Springer-Verlag , New York, NY .]] Reynolds, J. C. 1978. User defined types and procedural data structures as complementary approaches to data abstraction. In D. Gries, editor, Programming Methodology, A Collection of Articles by IFIP WG2.3, 309--317. Springer-Verlag, New York, NY.]]","key":"e_1_2_1_46_1"},{"volume-title":"The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language","author":"Shalit A.","unstructured":"Shalit , A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language . Addison-Wesley , Reading, Mass .]] Shalit, A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language. Addison-Wesley, Reading, Mass.]]","key":"e_1_2_1_47_1"},{"volume-title":"Linear types can change the world! In M","author":"Wadler P.","unstructured":"Wadler , P. 1990. Linear types can change the world! In M . Broy and C. Jones, editors, IFIP TC 2 Working Conference on Programming Concepts and Methods, Sea of Galilee, Israel, 7--359. North Holland (Apr .).]] Wadler, P. 1990. Linear types can change the world! In M. Broy and C. Jones, editors, IFIP TC 2 Working Conference on Programming Concepts and Methods, Sea of Galilee, Israel, 7--359. North Holland (Apr.).]]","key":"e_1_2_1_48_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_49_1","DOI":"10.1006\/inco.1994.1093"},{"doi-asserted-by":"publisher","key":"e_1_2_1_50_1","DOI":"10.1145\/507635.507665"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1018203.1018207","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1018203.1018207","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.1018207"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2004,9]]},"references-count":49,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2004,9]]}},"alternative-id":["10.1145\/1018203.1018207"],"URL":"https:\/\/doi.org\/10.1145\/1018203.1018207","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"}}]}}