{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:52:26Z","timestamp":1750308746981,"version":"3.41.0"},"reference-count":83,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2006,5,1]],"date-time":"2006-05-01T00:00:00Z","timestamp":1146441600000},"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":[[2006,5]]},"abstract":"<jats:p>MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to the extensibility problem of object-oriented programming languages, allowing the modular addition of both new types and new operations to an existing type hierarchy. This article illustrates and motivates the design of MultiJava and describes its modular static typechecking and modular compilation strategies. Although MultiJava extends Java, the key ideas of the language design are applicable to other object-oriented languages, such as C# and C++, and even, with some modifications, to functional languages such as ML.This article also discusses the variety of application domains in which MultiJava has been successfully used by others, including pervasive computing, graphical user interfaces, and compilers. MultiJava allows users to express desired programming idioms in a way that is declarative and supports static typechecking, in contrast to the tedious and type-unsafe workarounds required in Java. MultiJava also provides opportunities for new kinds of extensibility that are not easily available in Java.<\/jats:p>","DOI":"10.1145\/1133651.1133655","type":"journal-article","created":{"date-parts":[[2006,7,25]],"date-time":"2006-07-25T14:14:26Z","timestamp":1153836866000},"page":"517-575","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":61,"title":["MultiJava"],"prefix":"10.1145","volume":"28","author":[{"given":"Curtis","family":"Clifton","sequence":"first","affiliation":[{"name":"Rose-Hulman Institute of Technology, Terre Haute, IN"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Todd","family":"Millstein","sequence":"additional","affiliation":[{"name":"University of California, Los Angeles, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Gary T.","family":"Leavens","sequence":"additional","affiliation":[{"name":"Iowa State University, Ames, IA"}],"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":[[2006,5]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/117954.117963"},{"key":"e_1_2_1_2_1","volume-title":"ECOOP 2002---Object-Oriented Programming, 16th European Conference, M\u00e1laga, Spain, Proceedings, B. Magnusson, Ed. Lecture Notes in Computer Science","volume":"2374","author":"Ancona D.","unstructured":"Ancona , D. , Lagorio , G. , and Zucca , E . 2002. A formal framework for Java separate compilation . In ECOOP 2002---Object-Oriented Programming, 16th European Conference, M\u00e1laga, Spain, Proceedings, B. Magnusson, Ed. Lecture Notes in Computer Science , vol. 2374 . Springer-Verlag, Berlin, Germany, 609--635. Ancona, D., Lagorio, G., and Zucca, E. 2002. A formal framework for Java separate compilation. In ECOOP 2002---Object-Oriented Programming, 16th European Conference, M\u00e1laga, Spain, Proceedings, B. Magnusson, Ed. Lecture Notes in Computer Science, vol. 2374. Springer-Verlag, Berlin, Germany, 609--635."},{"key":"e_1_2_1_3_1","unstructured":"Arnold K. Gosling J. and Holmes D. 2000. The Java Programming Language 3rd ed. Addison-Wesley Reading MA. Arnold K. Gosling J. and Holmes D. 2000. The Java Programming Language 3rd ed. Addison-Wesley Reading MA."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/MPRV.2002.1037717"},{"key":"e_1_2_1_5_1","unstructured":"AspectJ Team. 2004. The AspectJ programming guide. Available online from http:\/\/eclipse.org\/aspectj. AspectJ Team. 2004. The AspectJ programming guide. Available online from http:\/\/eclipse.org\/aspectj."},{"key":"e_1_2_1_6_1","unstructured":"Baumgartner G. Jansche M. and L\u00e4ufer K. 2002. Half & Half: Multiple dispatch and retroactive abstraction for Java. Tech. rep. OSU-CISRC-5\/01-TR08. Department of Computer Science The Ohio State University. Columbus OH. Baumgartner G. Jansche M. and L\u00e4ufer K. 2002. Half & Half: Multiple dispatch and retroactive abstraction for Java. Tech. rep. OSU-CISRC-5\/01-TR08. Department of Computer Science The Ohio State University. Columbus OH."},{"volume-title":"Electronic Notes in Theoretical Computer Science","author":"Bonniot D.","key":"e_1_2_1_7_1","unstructured":"Bonniot , D. 2003. Using kinds to type partially-polymorphic methods . In Electronic Notes in Theoretical Computer Science , G. Barthe and P. Thiemann, Eds. Vol. 75. Elsevier , New York, NY . Bonniot, D. 2003. Using kinds to type partially-polymorphic methods. In Electronic Notes in Theoretical Computer Science, G. Barthe and P. Thiemann, Eds. Vol. 75. Elsevier, New York, NY."},{"key":"e_1_2_1_8_1","unstructured":"Bonniot D. and Keller B. 2003. The Nice user's manual. Available online at http:\/\/nice.sourceforge.net. Bonniot D. and Keller B. 2003. The Nice user's manual. Available online at http:\/\/nice.sourceforge.net."},{"volume-title":"POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press","author":"Bourdoncle F.","key":"e_1_2_1_9_1","unstructured":"Bourdoncle , F. and Merz , S . 1997. Type-checking higher-order polymorphic multi-methods . In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press , New York, NY, 302--315. 10.1145\/263699.263743 Bourdoncle, F. and Merz, S. 1997. Type-checking higher-order polymorphic multi-methods. In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, 302--315. 10.1145\/263699.263743"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/263698.263721"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/97945.97982"},{"key":"e_1_2_1_12_1","unstructured":"Bridges S. Figueroa M. Hsu D. and Diorio C. 2003. Field-programmable learning arrays. In Advances in Neural Information Processing Systems 15. MIT Press Cambridge MA. Bridges S. Figueroa M. Hsu D. and Diorio C. 2003. Field-programmable learning arrays. In Advances in Neural Information Processing Systems 15. MIT Press Cambridge MA."},{"key":"e_1_2_1_13_1","doi-asserted-by":"crossref","first-page":"221","DOI":"10.1002\/j.1096-9942.1995.tb00019.x","article-title":"On binary methods","volume":"1","author":"Bruce K.","year":"1995","unstructured":"Bruce , K. , Cardelli , L. , Castagna , G. , Group , T. H. O., Leavens , G. T. , and Pierce , B. 1995 . On binary methods . Theor. Pract. Obj. Syst. 1 , 3, 221 -- 242 . Bruce, K., Cardelli, L., Castagna, G., Group, T. H. O., Leavens, G. T., and Pierce, B. 1995. On binary methods. Theor. Pract. Obj. Syst. 1, 3, 221--242.","journal-title":"Theor. Pract. Obj. Syst."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/0890-5401(88)90007-7"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/203095.203096"},{"volume-title":"Object-Oriented Programming: A Unified Foundation. Progress in Theoretical Computer Science","author":"Castagna G.","key":"e_1_2_1_16_1","unstructured":"Castagna , G. 1997. Object-Oriented Programming: A Unified Foundation. Progress in Theoretical Computer Science . Birkhauser , Boston, MA . Castagna, G. 1997. Object-Oriented Programming: A Unified Foundation. Progress in Theoretical Computer Science. Birkhauser, Boston, MA."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1995.1033"},{"key":"e_1_2_1_18_1","volume-title":"ECOOP '92, European Conference on Object-Oriented Programming","volume":"615","author":"Chambers C.","year":"1992","unstructured":"Chambers , C. 1992 . Object-oriented multi-methods in Cecil . In ECOOP '92, European Conference on Object-Oriented Programming , Utrecht, The Netherlands, O. L. Madsen, Ed. Lecture Notes in Computer Science , vol. 615 . Springer-Verlag, New York, NY, 33--56. Chambers, C. 1992. Object-oriented multi-methods in Cecil. In ECOOP '92, European Conference on Object-Oriented Programming, Utrecht, The Netherlands, O. L. Madsen, Ed. Lecture Notes in Computer Science, vol. 615. Springer-Verlag, New York, NY, 33--56."},{"key":"e_1_2_1_19_1","unstructured":"Chambers C. 1997. The Cecil language specification and rationale: Version 2.1. Available online from http:\/\/www.cs.washington.edu\/research\/projects\/cecil\/www\/pubs\/cecil-spec.html. Chambers C. 1997. The Cecil language specification and rationale: Version 2.1. Available online from http:\/\/www.cs.washington.edu\/research\/projects\/cecil\/www\/pubs\/cecil-spec.html."},{"key":"e_1_2_1_20_1","volume-title":"Proceedings of the Fifth Workshop of Foundations of Object-Oriented Languages","author":"Chambers C.","year":"1998","unstructured":"Chambers , C. 1998 . Towards Diesel, a next-generation OO language after Cecil. Invited talk . In Proceedings of the Fifth Workshop of Foundations of Object-Oriented Languages ( San Diego, CA). Chambers, C. 1998. Towards Diesel, a next-generation OO language after Cecil. Invited talk. In Proceedings of the Fifth Workshop of Foundations of Object-Oriented Languages (San Diego, CA)."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320407"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/218570.218571"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353181"},{"key":"e_1_2_1_25_1","volume-title":"Foundations of Object-Oriented Languages, REX School\/Workshop","author":"Cook W. R.","year":"1990","unstructured":"Cook , W. R. 1991. Object-oriented programming versus abstract data types . In Foundations of Object-Oriented Languages, REX School\/Workshop , Noordwijkerhout, The Netherlands, May\/June 1990 , J. W. de Bakker, W. P. de Roever, and G. Rozenberg, Eds. Lecture Notes in Computer Science, vol. 489 . Springer-Verlag , New York, NY, 151--178. Cook, W. R. 1991. Object-oriented programming versus abstract data types. In Foundations of Object-Oriented Languages, REX School\/Workshop, Noordwijkerhout, The Netherlands, May\/June 1990, J. W. de Bakker, W. P. de Roever, and G. Rozenberg, Eds. Lecture Notes in Computer Science, vol. 489. Springer-Verlag, New York, NY, 151--178."},{"key":"e_1_2_1_26_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. IEEE Computer Science Press Los Alamitos CA 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. IEEE Computer Science Press Los Alamitos CA 147--156.","DOI":"10.1109\/LICS.1999.782606"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/232627.232654"},{"volume-title":"Sixth Conference on Object-Oriented Technologies and Systems (COOTS). USENIX","author":"Dutchyn C.","key":"e_1_2_1_28_1","unstructured":"Dutchyn , C. , Szafron , D. , Bromling , S. , and Holst , W . 2001. Multi-dispatch in the Java virtual machine: Design and implementation . In Sixth Conference on Object-Oriented Technologies and Systems (COOTS). USENIX , Berkeley, CA. Dutchyn, C., Szafron, D., Bromling, S., and Holst, W. 2001. Multi-dispatch in the Java virtual machine: Design and implementation. In Sixth Conference on Object-Oriented Technologies and Systems (COOTS). USENIX, Berkeley, CA."},{"key":"e_1_2_1_29_1","volume-title":"ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science","volume":"1445","author":"Ernst M. D.","unstructured":"Ernst , M. D. , Kaplan , C. , and Chambers , C . 1998. Predicate dispatching: A unified theory of dispatch . In ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science , vol. 1445 . Springer-Verlag, New York, NY, 186--211. Ernst, M. D., Kaplan, C., and Chambers, C. 1998. Predicate dispatching: A unified theory of dispatch. In ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science, vol. 1445. Springer-Verlag, New York, NY, 186--211."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/949343.949332"},{"volume-title":"The Dylan Programming Book","author":"Feinberg N.","key":"e_1_2_1_31_1","unstructured":"Feinberg , N. , Keene , S. E. , Mathews , R. O. , and Withington ., P. T. 1997. The Dylan Programming Book . Addison-Wesley Longman , Reading, MA . Feinberg, N., Keene, S. E., Mathews, R. O., and Withington., P. T. 1997. The Dylan Programming Book. Addison-Wesley Longman, Reading, MA."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/289423.289432"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277730"},{"volume-title":"POPL '98: Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press","author":"Flatt M.","key":"e_1_2_1_34_1","unstructured":"Flatt , M. , Krishnamurthi , S. , and Felleisen , M . 1998. Classes and mixins . In POPL '98: Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press , New York, NY, 171--183. 10.1145\/268946.268961 Flatt, M., Krishnamurthi, S., and Felleisen, M. 1998. Classes and mixins. In POPL '98: Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, 171--183. 10.1145\/268946.268961"},{"volume-title":"Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '00)","author":"Forax R.","key":"e_1_2_1_35_1","unstructured":"Forax , R. , Duris , E. , and Roussel , G . 2000. Java multi-method framework . In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '00) , Sydney, Australia. IEEE Computer Society Press, Los Alamitos, CA. Forax, R., Duris, E., and Roussel, G. 2000. Java multi-method framework. In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '00), Sydney, Australia. IEEE Computer Society Press, Los Alamitos, CA."},{"volume-title":"Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '98)","author":"Gagnon E.","key":"e_1_2_1_36_1","unstructured":"Gagnon , E. and Hendren , L. J . 1998. SableCC, an object-oriented compiler framework . In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '98) , Santa Barbara, California. IEEE Computer Society Press, Los Alamitos, CA. Gagnon, E. and Hendren, L. J. 1998. SableCC, an object-oriented compiler framework. In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '98), Santa Barbara, California. IEEE Computer Society Press, Los Alamitos, CA."},{"key":"e_1_2_1_37_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1995","unstructured":"Gamma , E. , Helm , R. , Johnson , R. , and Vlissides , J . 1995 . Design Patterns: Elements of Reusable Object-Oriented Software . Addison-Wesley , Reading, MA . Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_38_1","volume-title":"Proceedings of the Workshop on Foundations of Software Engineering","author":"Garrigue J.","year":"2000","unstructured":"Garrigue , J. 2000 . Code reuse through polymorphic variants . In Proceedings of the Workshop on Foundations of Software Engineering , Sassaguri, Japan. Available online from http:\/\/wwwfun.kurims.kyoto-u.ac.jp\/~garrigue\/papers\/fose 2000.html. Garrigue, J. 2000. Code reuse through polymorphic variants. In Proceedings of the Workshop on Foundations of Software Engineering, Sassaguri, Japan. Available online from http:\/\/wwwfun.kurims.kyoto-u.ac.jp\/~garrigue\/papers\/fose2000.html."},{"volume-title":"Smalltalk-80: The Interactive Programming Environment","author":"Goldberg A.","key":"e_1_2_1_39_1","unstructured":"Goldberg , A. 1984. Smalltalk-80: The Interactive Programming Environment . Addison-Wesley , Reading, MA . Goldberg, A. 1984. Smalltalk-80: The Interactive Programming Environment. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_40_1","unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification 2nd ed. The Java Series. Addison-Wesley Boston MA. Gosling J. Joy B. Steele G. and Bracha G. 2000. The Java Language Specification 2nd ed. The Java Series. Addison-Wesley Boston MA."},{"key":"e_1_2_1_41_1","volume-title":"Tech. Rep. UW-CSE-01-06-01. Department of Computer Science and Engineering","author":"Grimm R.","year":"2001","unstructured":"Grimm , R. , Davis , J. , Lemar , E. , MacBeth , A. , Swanson , S. , Gribble , S. , Anderson , T. , Bershad , B. , Borriello , G. , and Wetherall , D . 2001 . Programming for pervasive computing environments. Tech. Rep. UW-CSE-01-06-01. Department of Computer Science and Engineering , University of Washington , Seattle, WA . Grimm, R., Davis, J., Lemar, E., MacBeth, A., Swanson, S., Gribble, S., Anderson, T., Bershad, B., Borriello, G., and Wetherall, D. 2001. Programming for pervasive computing environments. Tech. Rep. UW-CSE-01-06-01. Department of Computer Science and Engineering, University of Washington, Seattle, WA."},{"volume-title":"ECOOP 2003---Object-Oriented Programming, 17th European Conference","author":"Grothoff C.","key":"e_1_2_1_42_1","unstructured":"Grothoff , C. 2003. Walkabout revisited: The Runabout . In ECOOP 2003---Object-Oriented Programming, 17th European Conference , Darmstadt, Germany , Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science, vol. 2743 . Springer-Verlag , New York, NY, 103--125. Grothoff, C. 2003. Walkabout revisited: The Runabout. In ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science, vol. 2743. Springer-Verlag, New York, NY, 103--125."},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/165854.165932"},{"key":"e_1_2_1_44_1","volume-title":"Proceedings of the 4th IEEE Workshop on Mobile Computing Systems & Applications (WMCSA","author":"Hightower J.","year":"2002","unstructured":"Hightower , J. , Brumitt , B. , and Borriello , G . 2002. The location stack: A layered model for location in ubiquitous computing . In Proceedings of the 4th IEEE Workshop on Mobile Computing Systems & Applications (WMCSA 2002 ). IEEE Computer Society Press, Los Alamitos, CA, 22--28. Hightower, J., Brumitt, B., and Borriello, G. 2002. The location stack: A layered model for location in ubiquitous computing. In Proceedings of the 4th IEEE Workshop on Mobile Computing Systems & Applications (WMCSA 2002). IEEE Computer Society Press, Los Alamitos, CA, 22--28."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28732"},{"key":"e_1_2_1_46_1","volume-title":"ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science","volume":"1445","author":"Keller R.","unstructured":"Keller , R. and H\u00f6lzle , U . 1998. Binary component adapatation . In ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science , vol. 1445 . Springer-Verlag, New York, NY, 307--329. Keller, R. and H\u00f6lzle, U. 1998. Binary component adapatation. In ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science, vol. 1445. Springer-Verlag, New York, NY, 307--329."},{"key":"e_1_2_1_47_1","volume-title":"ECOOP 2001---Object-Oriented Programming 15th European Conference, Budapest Hungary, J. L. Knudsen, Ed. Lecture Notes in Computer Science","volume":"2072","author":"Kiczales G.","unstructured":"Kiczales , G. , Hilsdale , E. , Hugunin , J. , Kersten , M. , Palm , J. , and Griswold , W. G . 2001. An overview of AspectJ . In ECOOP 2001---Object-Oriented Programming 15th European Conference, Budapest Hungary, J. L. Knudsen, Ed. Lecture Notes in Computer Science , vol. 2072 . Springer-Verlag, Berlin, Germany, 327--353. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. G. 2001. An overview of AspectJ. In ECOOP 2001---Object-Oriented Programming 15th European Conference, Budapest Hungary, J. L. Knudsen, Ed. Lecture Notes in Computer Science, vol. 2072. Springer-Verlag, Berlin, Germany, 327--353."},{"key":"e_1_2_1_48_1","volume-title":"ECOOP '97---Object-Oriented Programming 11th European Conference, Jyv\u00e4skyl\u00e4, Finland, Proceedings, M. Ak\u015fit and S. Matsuoka, Eds. Lecture Notes in Computer Science","volume":"1241","author":"Kiczales G.","unstructured":"Kiczales , G. , Lamping , J. , Menhdhekar , A. , Maeda , C. , Lopes , C. , Loingtier , J.-M. , and Irwin , J . 1997. Aspect-oriented programming . In ECOOP '97---Object-Oriented Programming 11th European Conference, Jyv\u00e4skyl\u00e4, Finland, Proceedings, M. Ak\u015fit and S. Matsuoka, Eds. Lecture Notes in Computer Science , vol. 1241 . Springer-Verlag, New York, NY, 220--242. Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In ECOOP '97---Object-Oriented Programming 11th European Conference, Jyv\u00e4skyl\u00e4, Finland, Proceedings, M. Ak\u015fit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer-Verlag, New York, NY, 220--242."},{"key":"e_1_2_1_49_1","unstructured":"Kopi 2004. Kopi project home page. Go online to http:\/\/www.dms.at\/kopi. Kopi 2004. Kopi project home page. Go online to http:\/\/www.dms.at\/kopi."},{"key":"e_1_2_1_50_1","volume-title":"ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science","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 ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science , vol. 1445 . Springer-Verlag, New York, NY, 91--113. Krishnamurthi, S., Felleisen, M., and Friedman, D. P. 1998. Synthesizing object-oriented and functional design to promote re-use. In ECOOP '98---Object-Oriented Programming, 12th European Conference, Brussels, Belgium, Proceedings, E. Jul, Ed. Lecture Notes in Computer Science, vol. 1445. Springer-Verlag, New York, NY, 91--113."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286977"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949324"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286945"},{"key":"e_1_2_1_54_1","unstructured":"Lindholm T. and Yellin F. 2000. The Java Virtual Machine Specification 2nd ed. Addison-Wesley Reading MA. Lindholm T. and Yellin F. 2000. The Java Virtual Machine Specification 2nd ed. Addison-Wesley Reading MA."},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286979"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/278283.278288"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504298"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1029006"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/581478.581489"},{"key":"e_1_2_1_61_1","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1006\/inco.2002.3103","article-title":"Modular statically typed multimethods","volume":"175","author":"Millstein T.","year":"2002","unstructured":"Millstein , T. and Chambers , C. 2002 . Modular statically typed multimethods . Inform. Computat. 175 , 1 (May), 76--118. Millstein, T. and Chambers, C. 2002. Modular statically typed multimethods. Inform. Computat. 175, 1 (May), 76--118.","journal-title":"Inform. Computat."},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949325"},{"key":"e_1_2_1_63_1","volume-title":"ECOOP '91 European Conference on Object-Oriented Programming, Geneva, Switzerland, Proceedings, P. America, Ed. Lecture Notes in Computer Science","volume":"512","author":"Mugridge W. B.","unstructured":"Mugridge , W. B. , Hosking , J. G. , and Hamer , J . 1991. Multi-methods in a statically-typed programming language . In ECOOP '91 European Conference on Object-Oriented Programming, Geneva, Switzerland, Proceedings, P. America, Ed. Lecture Notes in Computer Science , vol. 512 . Springer-Verlag, New York, NY, 307--324. Mugridge, W. B., Hosking, J. G., and Hamer, J. 1991. Multi-methods in a statically-typed programming language. In ECOOP '91 European Conference on Object-Oriented Programming, Geneva, Switzerland, Proceedings, P. America, Ed. Lecture Notes in Computer Science, vol. 512. Springer-Verlag, New York, NY, 307--324."},{"volume-title":"Pattern Languages of Program Design 3","author":"Nordberg M. E.","key":"e_1_2_1_64_1","unstructured":"Nordberg , M. E. 1998. Default and extrinsic visitor . In Pattern Languages of Program Design 3 , R. C. Martin, D. Riehle, and F. Buschmann, Eds. Addison-Wesley , Reading, MA , 105--123. Nordberg, M. E. 1998. Default and extrinsic visitor. In Pattern Languages of Program Design 3, R. C. Martin, D. Riehle, and F. Buschmann, Eds. Addison-Wesley, Reading, MA, 105--123."},{"key":"e_1_2_1_65_1","volume-title":"CC 2003.","volume":"2622","author":"Nystrom N.","unstructured":"Nystrom , N. , Clarkson , M. R. , and Myers , A. C . 2003. Polyglot: An extensible compiler framework for java. In Compiler Construction: 12'th International Conference , CC 2003. Vol. 2622 . Springer-Verlag, New York, NY, 138--152. Nystrom, N., Clarkson, M. R., and Myers, A. C. 2003. Polyglot: An extensible compiler framework for java. In Compiler Construction: 12'th International Conference, CC 2003. Vol. 2622. Springer-Verlag, New York, NY, 138--152."},{"key":"e_1_2_1_66_1","volume-title":"ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science","volume":"2743","author":"Odersky M.","unstructured":"Odersky , M. , Cremet , V. , R\u00f6ckl , C. , and Zenger , M . 2003. A nominal theory of objects with dependent types . In ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science , vol. 2743 . Springer-Verlag, New York, NY, 201--224. Odersky, M., Cremet, V., R\u00f6ckl, C., and Zenger, M. 2003. A nominal theory of objects with dependent types. In ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science, vol. 2743. Springer-Verlag, New York, NY, 201--224."},{"volume-title":"POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press","author":"Odersky M.","key":"e_1_2_1_67_1","unstructured":"Odersky , M. and Wadler , P . 1997. Pizza into Java: Translating theory into practice . In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press , New York, NY, 146--159. 10.1145\/263699.263715 Odersky, M. and Wadler, P. 1997. Pizza into Java: Translating theory into practice. In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, 146--159. 10.1145\/263699.263715"},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/383845.383856"},{"volume-title":"Object-Oriented Programming: The CLOS Perspective","author":"Paepcke A.","key":"e_1_2_1_69_1","unstructured":"Paepcke , A. 1993. Object-Oriented Programming: The CLOS Perspective . The MIT Press , Cambridge, MA . Paepcke, A. 1993. Object-Oriented Programming: The CLOS Perspective. The MIT Press, Cambridge, MA."},{"volume-title":"Proceedings of the 22nd IEEE International Computer Software and Applications Conference (COMPSAC, Vienna Austria). IEEE Computer Science Press","author":"Palsberg J.","key":"e_1_2_1_70_1","unstructured":"Palsberg , J. and Jay , C. B . 1998. The essence of the visitor pattern . In Proceedings of the 22nd IEEE International Computer Software and Applications Conference (COMPSAC, Vienna Austria). IEEE Computer Science Press , Los Alamitos, CA, 9--15. Palsberg, J. and Jay, C. B. 1998. The essence of the visitor pattern. In Proceedings of the 22nd IEEE International Computer Software and Applications Conference (COMPSAC, Vienna Austria). IEEE Computer Science Press, Los Alamitos, CA, 9--15."},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/361598.361623"},{"key":"e_1_2_1_72_1","volume-title":"4th Informatik Symposium, IBM Germany, Wildbad, 25--27","volume":"23","author":"Parnas D. L.","year":"1975","unstructured":"Parnas , D. L. 1975 . Software engineering or methods for the multi-person construction of multi-version programs. In Programming Methodology , 4th Informatik Symposium, IBM Germany, Wildbad, 25--27 September, 1974, C. E. Hackl, Ed. Lecture Notes in Computer Science , vol. 23 . Springer-Verlag, New York, NY, 225--235. Parnas, D. L. 1975. Software engineering or methods for the multi-person construction of multi-version programs. In Programming Methodology, 4th Informatik Symposium, IBM Germany, Wildbad, 25--27 September, 1974, C. E. Hackl, Ed. Lecture Notes in Computer Science, vol. 23. Springer-Verlag, New York, NY, 225--235."},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.1109\/MPRV.2004.7"},{"key":"e_1_2_1_74_1","unstructured":"Rain 2004. Rain home page. Go online to http:\/\/seattleweb.intel_research.net\/projects\/rain. Rain 2004. Rain home page. Go online to http:\/\/seattleweb.intel_research.net\/projects\/rain."},{"volume-title":"New Directions in Algorithmic Languages","author":"Reynolds J. C.","key":"e_1_2_1_75_1","unstructured":"Reynolds , J. C. 1975. User-defined types and procedural data structures as complementary approaches to type abstraction . In New Directions in Algorithmic Languages , S. A. Schuman, Ed. INRIA, Rocquencourt , France , 157--168. Reynolds, J. C. 1975. User-defined types and procedural data structures as complementary approaches to type abstraction. In New Directions in Algorithmic Languages, S. A. Schuman, Ed. INRIA, Rocquencourt, France, 157--168."},{"key":"e_1_2_1_76_1","volume-title":"Proceedings of a Workshop","volume":"94","author":"Reynolds J. C.","year":"1980","unstructured":"Reynolds , J. C. 1980 . Using category theory to design implicit conversions and generic operators. In Semantics-Directed Compiler Generation , Proceedings of a Workshop , Aarhus, Denmark, N. D. Jones, Ed. Lecture Notes in Computer Science , vol. 94 . Springer-Verlag, New York, NY, 211--258. Reynolds, J. C. 1980. Using category theory to design implicit conversions and generic operators. In Semantics-Directed Compiler Generation, Proceedings of a Workshop, Aarhus, Denmark, N. D. Jones, Ed. Lecture Notes in Computer Science, vol. 94. Springer-Verlag, New York, NY, 211--258."},{"volume-title":"The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language","author":"Shalit A.","key":"e_1_2_1_77_1","unstructured":"Shalit , A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language . Addison-Wesley , Reading, MA . Shalit, A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_78_1","volume-title":"Common LISP: The Language","author":"Steele Jr., G. L.","unstructured":"Steele , Jr., G. L. 1990. Common LISP: The Language , 2 nd ed. Digital Press, Bedford , MA. Steele, Jr., G. L. 1990. Common LISP: The Language, 2nd ed. Digital Press, Bedford, MA.","edition":"2"},{"key":"e_1_2_1_79_1","volume-title":"The C&plus;&plus","author":"Stroustrup B.","unstructured":"Stroustrup , B. 1997. The C&plus;&plus ; Programming Language: 3 rd ed. Addison-Wesley , Reading, MA. Stroustrup, B. 1997. The C&plus;&plus; Programming Language: 3rd ed. Addison-Wesley, Reading, MA.","edition":"3"},{"key":"e_1_2_1_80_1","volume-title":"ICSE '99: Proceedings of the 21st International Conference on Software Engineering. ACM Press","author":"Tarr P. L.","year":"1999","unstructured":"Tarr , P. L. , Ossher , H. , Harrison , W. H. , and Sutton Jr ., S. M. 1999 . N degrees of separation: Multi-dimensional separation of concerns . In ICSE '99: Proceedings of the 21st International Conference on Software Engineering. ACM Press , New York, NY, 107--119. 10.1145\/302405.302457 Tarr, P. L., Ossher, H., Harrison, W. H., and Sutton Jr., S. M. 1999. N degrees of separation: Multi-dimensional separation of concerns. In ICSE '99: Proceedings of the 21st International Conference on Software Engineering. ACM Press, New York, NY, 107--119. 10.1145\/302405.302457"},{"volume-title":"ECOOP 2004---Object-Oriented Programming, 18th European Conference","author":"Torgersen M.","key":"e_1_2_1_81_1","unstructured":"Torgersen , M. 2004. The expression problem revisited: Four new solutions using generics . In ECOOP 2004---Object-Oriented Programming, 18th European Conference , Oslo, Norway , Proceedings, M. Odersky, Ed. Lecture Notes in Computer Science, vol. 3086 . Springer-Verlag , New York, NY, 123--143. Torgersen, M. 2004. The expression problem revisited: Four new solutions using generics. In ECOOP 2004---Object-Oriented Programming, 18th European Conference, Oslo, Norway, Proceedings, M. Odersky, Ed. Lecture Notes in Computer Science, vol. 3086. Springer-Verlag, New York, NY, 123--143."},{"edition":"2","volume-title":"Troelsen, A. 2003. C&num; and the .NET platform","key":"e_1_2_1_82_1","unstructured":"Troelsen, A. 2003. C&num; and the .NET platform , 2 nd ed. Apress, Berkeley , CA. Troelsen, A. 2003. C&num; and the .NET platform, 2nd ed. Apress, Berkeley, CA."},{"volume-title":"Visitor in frameworks. C&plus;&plus","author":"Vlissides J.","key":"e_1_2_1_83_1","unstructured":"Vlissides , J. 1999. Visitor in frameworks. C&plus;&plus ; Rep. 11, 10 (Nov .\/Dec.), 40--46. Vlissides, J. 1999. Visitor in frameworks. C&plus;&plus; Rep. 11, 10 (Nov.\/Dec.), 40--46."},{"key":"e_1_2_1_84_1","doi-asserted-by":"publisher","DOI":"10.1145\/507635.507665"},{"volume-title":"Proceedings of the 12th International Workshop on Foundations of Object-Oriented Languages (FOOL 12","author":"Zenger M.","key":"e_1_2_1_85_1","unstructured":"Zenger , M. and Odersky , M . 2005. Independently extensible solutions to the expression problem . In Proceedings of the 12th International Workshop on Foundations of Object-Oriented Languages (FOOL 12 , Long Beach, CA). ACM Press, New York, NY. Zenger, M. and Odersky, M. 2005. Independently extensible solutions to the expression problem. In Proceedings of the 12th International Workshop on Foundations of Object-Oriented Languages (FOOL 12, Long Beach, CA). ACM Press, New York, NY."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1133651.1133655","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1133651.1133655","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T20:22:17Z","timestamp":1750278137000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1133651.1133655"}},"subtitle":["Design rationale, compiler implementation, and applications"],"short-title":[],"issued":{"date-parts":[[2006,5]]},"references-count":83,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2006,5]]}},"alternative-id":["10.1145\/1133651.1133655"],"URL":"https:\/\/doi.org\/10.1145\/1133651.1133655","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2006,5]]},"assertion":[{"value":"2006-05-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}