{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,27]],"date-time":"2026-04-27T23:08:38Z","timestamp":1777331318502,"version":"3.51.4"},"publisher-location":"New York, NY, USA","reference-count":45,"publisher":"ACM","license":[{"start":{"date-parts":[[2008,10,19]],"date-time":"2008-10-19T00:00:00Z","timestamp":1224374400000},"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":[],"published-print":{"date-parts":[[2008,10,19]]},"DOI":"10.1145\/1449764.1449799","type":"proceedings-article","created":{"date-parts":[[2008,10,22]],"date-time":"2008-10-22T08:25:44Z","timestamp":1224663944000},"page":"439-456","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":27,"title":["The visitor pattern as a reusable, generic, type-safe component"],"prefix":"10.1145","author":[{"given":"Bruno C.d.S.","family":"Oliveira","sequence":"first","affiliation":[{"name":"University of Oxford, Oxford, United Kingdom"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Meng","family":"Wang","sequence":"additional","affiliation":[{"name":"University of Oxford, Oxford, United Kingdom"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jeremy","family":"Gibbons","sequence":"additional","affiliation":[{"name":"University of Oxford, Oxford, United Kingdom"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,10,19]]},"reference":[{"key":"e_1_3_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_7"},{"key":"e_1_3_2_1_3_1","first-page":"52","volume-title":"Nested datatypes","author":"Bird Richard","year":"1998","unstructured":"Richard Bird and Lambert Meertens . Nested datatypes . In J. Jeuring, editor, LNCS 1422: Mathematics of Program Construction , pages 52 -- 67 , 1998 . Richard Bird and Lambert Meertens. Nested datatypes. In J. Jeuring, editor, LNCS 1422: Mathematics of Program Construction, pages 52--67, 1998."},{"key":"e_1_3_2_1_4_1","volume-title":"Bird and Oege De Moor. Algebra of Programming","author":"Richard","year":"1997","unstructured":"Richard S. Bird and Oege De Moor. Algebra of Programming . Prentice Hall , 1997 . Richard S. Bird and Oege De Moor. Algebra of Programming. Prentice Hall, 1997."},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(85)90135-5"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.11.061"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/218570.218571"},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.2307\/2371045"},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353181"},{"key":"e_1_3_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2008.7.5.a2"},{"key":"e_1_3_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094849"},{"key":"e_1_3_2_1_14_1","first-page":"186","volume-title":"European Conference on Object-Oriented Programming","author":"Ernst Michael","year":"1998","unstructured":"Michael Ernst , Craig Kaplan , and Craig Chambers . Predicate dispatching : A unified theory of dispatch . In European Conference on Object-Oriented Programming , pages 186 -- 211 , London, UK , 1998 . Springer-Verlag. Michael Ernst, Craig Kaplan, and Craig Chambers. Predicate dispatching: A unified theory of dispatch. In European Conference on Object-Oriented Programming, pages 186--211, London, UK, 1998. Springer-Verlag."},{"key":"e_1_3_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1066677.1066996"},{"key":"e_1_3_2_1_16_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma Erich","year":"1995","unstructured":"Erich Gamma , Richard Helm , Ralph Johnson , and John Vlissides . Design Patterns: Elements of Reusable Object-Oriented Software . Addison-Wesley , 1995 . Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995."},{"key":"e_1_3_2_1_17_1","volume-title":"Declarative Programming in the Context of Object-Oriented Languages","author":"Gibbons Jeremy","year":"2003","unstructured":"Jeremy Gibbons . Patterns in datatype-generic programming. In J. Striegnitz, editor , Declarative Programming in the Context of Object-Oriented Languages , Uppsala , 2003 . Jeremy Gibbons. Patterns in datatype-generic programming. In J. Striegnitz, editor, Declarative Programming in the Context of Object-Oriented Languages, Uppsala, 2003."},{"key":"e_1_3_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159861.1159863"},{"key":"e_1_3_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809007291"},{"key":"e_1_3_2_1_20_1","volume-title":"Proofs and types","author":"Girard Jean-Yves","year":"1989","unstructured":"Jean-Yves Girard , Paul Taylor , and Yves Lafont . Proofs and types . Cambridge University Press , 1989 . Jean-Yves Girard, Paul Taylor, and Yves Lafont. Proofs and types. Cambridge University Press, 1989."},{"key":"e_1_3_2_1_21_1","first-page":"103","volume-title":"LNCS 2743: European Conference on Object-Oriented Programming","author":"Grothoff Christian","year":"2003","unstructured":"Christian Grothoff . Walkabout revisited: The Runabout . In LNCS 2743: European Conference on Object-Oriented Programming , pages 103 -- 125 , 2003 . Christian Grothoff. Walkabout revisited: The Runabout. In LNCS 2743: European Conference on Object-Oriented Programming, pages 103--125, 2003."},{"key":"e_1_3_2_1_22_1","volume-title":"ECOOP 2001 Workshop on Advanced Separation of Concerns","author":"Gudmundson Stephan","year":"2001","unstructured":"Stephan Gudmundson and Gregor Kiczales . Addressing practical software development issues in AspectJ with a pointcut interface . In ECOOP 2001 Workshop on Advanced Separation of Concerns , 2001 . Stephan Gudmundson and Gregor Kiczales. Addressing practical software development issues in AspectJ with a pointcut interface. In ECOOP 2001 Workshop on Advanced Separation of Concerns, 2001."},{"key":"e_1_3_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/583854.582436"},{"key":"e_1_3_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176927"},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062455.1062482"},{"key":"e_1_3_2_1_26_1","first-page":"220","volume-title":"Mehmet Aks 'it and Satoshi Matsuoka","author":"Kiczales Gregor","year":"1997","unstructured":"Gregor Kiczales , John Lamping , Anurag Menhdhekar , Chris Maeda , Cristina Lopes , Jean-Marc Loingtier , and John Irwin . Aspect-oriented programming . In Mehmet Aks 'it and Satoshi Matsuoka , editors, LNCS 1241: European Conference on Object-Oriented Programming , pages 220 -- 242 , 1997 . Gregor Kiczales, John Lamping, Anurag Menhdhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Mehmet Aks 'it and Satoshi Matsuoka, editors, LNCS 1241: European Conference on Object-Oriented Programming, pages 220--242, 1997."},{"key":"e_1_3_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.176926"},{"key":"e_1_3_2_1_28_1","first-page":"138","volume-title":"Naur and Randell","author":"McIlroy Doug","year":"1969","unstructured":"Doug McIlroy . Mass produced software components . In Naur and Randell ( 1969 ), pages 138 -- 155 . Doug McIlroy. Mass produced software components. In Naur and Randell (1969), pages 138--155."},{"key":"e_1_3_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01211391"},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224225"},{"key":"e_1_3_2_1_31_1","volume-title":"N.J.","author":"Meyer Bertrand","year":"1997","unstructured":"Bertrand Meyer . Object-Oriented Software Construction. Upper Saddle River , N.J. , Prentice Hall , 2 nd edition, 1997 . Bertrand Meyer. Object-Oriented Software Construction. Upper Saddle River, N.J., Prentice Hall, 2nd edition, 1997.","edition":"2"},{"key":"e_1_3_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2006.227"},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1038\/218019a0"},{"key":"e_1_3_2_1_34_1","volume-title":"6th International Workshop on Multiparadigm Programming with Object-Oriented Languages","author":"Moors Adriaan","year":"2007","unstructured":"Adriaan Moors , Frank Piessens , and Martin Odersky . Towards equal rights for higher-kinded types . In 6th International Workshop on Multiparadigm Programming with Object-Oriented Languages , 2007 . Adriaan Moors, Frank Piessens, and Martin Odersky. Towards equal rights for higher-kinded types. In 6th International Workshop on Multiparadigm Programming with Object-Oriented Languages, 2007."},{"key":"e_1_3_2_1_35_1","first-page":"1969","article-title":"Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch","volume":"7","author":"Naur Peter","year":"1968","unstructured":"Peter Naur and Brian Randell , editors. Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch , Germany , 7-11 Oct. 1968 . 1969 . Peter Naur and Brian Randell, editors. Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. 1969.","journal-title":"Germany"},{"key":"e_1_3_2_1_36_1","volume-title":"Object World","author":"Norvig Peter","year":"1996","unstructured":"Peter Norvig . Design patterns in dynamic programming . In Object World 96, May 1996 . Peter Norvig. Design patterns in dynamic programming. In Object World 96, May 1996."},{"key":"e_1_3_2_1_38_1","volume-title":"Proceedings of Foundations of Object-Oriented Languages","author":"Odersky Martin","year":"2005","unstructured":"Martin Odersky and Matthias Zenger . Independently extensible solutions to the expression problem . In Proceedings of Foundations of Object-Oriented Languages 12, January 2005 a. http:\/\/homepages.inf.ed.ac.uk\/wadler\/fool. Martin Odersky and Matthias Zenger. Independently extensible solutions to the expression problem. In Proceedings of Foundations of Object-Oriented Languages 12, January 2005a. http:\/\/homepages.inf.ed.ac.uk\/wadler\/fool."},{"key":"e_1_3_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094815"},{"key":"e_1_3_2_1_41_1","volume-title":"Reflection 2001: Meta-level Architectures and Separation of Crosscutting Concerns","author":"Orleans Doug","year":"2001","unstructured":"Doug Orleans and Karl Lieberherr . DJ: Dynamic adaptive programming in Java . In Reflection 2001: Meta-level Architectures and Separation of Crosscutting Concerns , Kyoto, Japan, September 2001 . Springer Verlag . Doug Orleans and Karl Lieberherr. DJ: Dynamic adaptive programming in Java. In Reflection 2001: Meta-level Architectures and Separation of Crosscutting Concerns, Kyoto, Japan, September 2001. Springer Verlag."},{"key":"e_1_3_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.5555\/645980.674267"},{"key":"e_1_3_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(92)90042-E"},{"key":"e_1_3_2_1_44_1","volume-title":"Haskell 98 Language and Libraries - The Revised Report","author":"Jones Simon Peyton","year":"2003","unstructured":"Simon Peyton Jones , editor. Haskell 98 Language and Libraries - The Revised Report . Cambridge University Press , Cambridge, England , 2003 . Simon Peyton Jones, editor. Haskell 98 Language and Libraries - The Revised Report. Cambridge University Press, Cambridge, England, 2003."},{"key":"e_1_3_2_1_45_1","volume-title":"International Component Users Conference","author":"Pfister Cuno","year":"1996","unstructured":"Cuno Pfister and Clemens Szyperski . Why objects are not enough . In International Component Users Conference , 1996 . Cuno Pfister and Clemens Szyperski. Why objects are not enough. In International Component Users Conference, 1996."},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/317636.317789"},{"key":"e_1_3_2_1_47_1","volume-title":"19th Australian Computer Science Conference","author":"Szyperski Clemens","year":"1996","unstructured":"Clemens Szyperski . Independently extensible systems - software engineering potential and challenges . In 19th Australian Computer Science Conference , 1996 . Clemens Szyperski. Independently extensible systems - software engineering potential and challenges. In 19th Australian Computer Science Conference, 1996."},{"key":"e_1_3_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/302405.302457"},{"key":"e_1_3_2_1_49_1","volume-title":"Proceedings of FOOL-11","author":"VanDrunen Thomas","year":"2004","unstructured":"Thomas VanDrunen and Jens Palsberg . Visitor-oriented programming . In Proceedings of FOOL-11 , the 11th ACM SIGPLAN International Workshop on Foundations of Object-Oriented Languages, New York, NY, USA , January 2004 . ACM Press. Thomas VanDrunen and Jens Palsberg. Visitor-oriented programming. In Proceedings of FOOL-11, the 11th ACM SIGPLAN International Workshop on Foundations of Object-Oriented Languages, New York, NY, USA, January 2004. ACM Press."},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504302"}],"event":{"name":"OOPSLA08: ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications","location":"Nashville TN USA","acronym":"OOPSLA08","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages","ACM Association for Computing Machinery"]},"container-title":["Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1449764.1449799","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1449764.1449799","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T09:56:15Z","timestamp":1750240575000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1449764.1449799"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,10,19]]},"references-count":45,"alternative-id":["10.1145\/1449764.1449799","10.1145\/1449764"],"URL":"https:\/\/doi.org\/10.1145\/1449764.1449799","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/1449955.1449799","asserted-by":"object"}]},"subject":[],"published":{"date-parts":[[2008,10,19]]},"assertion":[{"value":"2008-10-19","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}