{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,6]],"date-time":"2026-05-06T14:20:34Z","timestamp":1778077234010,"version":"3.51.4"},"publisher-location":"Berlin, Heidelberg","reference-count":44,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783642030123","type":"print"},{"value":"9783642030130","type":"electronic"}],"license":[{"start":{"date-parts":[[2009,1,1]],"date-time":"2009-01-01T00:00:00Z","timestamp":1230768000000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2009]]},"DOI":"10.1007\/978-3-642-03013-0_13","type":"book-chapter","created":{"date-parts":[[2009,7,30]],"date-time":"2009-07-30T10:30:01Z","timestamp":1248949801000},"page":"269-293","source":"Crossref","is-referenced-by-count":42,"title":["Modular Visitor Components"],"prefix":"10.1007","author":[{"given":"Bruno C. d. S.","family":"Oliveira","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","reference":[{"key":"13_CR1","unstructured":"McIlroy, D.: Mass produced software components. In: [2], pp. 138\u2013155"},{"key":"13_CR2","unstructured":"Naur, P., Randell, B. (eds.): Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch, Germany (1969)"},{"key":"13_CR3","unstructured":"Reynolds, J.C.: User-defined types and procedural data structures as complementary approaches to type abstraction. In: Schuman, S.A. (ed.) New Directions in Algorithmic Languages, Rocquencourt, pp. 157\u2013168 (1975)"},{"key":"13_CR4","series-title":"Lecture Notes in Computer Science","first-page":"151","volume-title":"REX Workshop\/School on the Foundations of Object-Oriented Languages","author":"W.R. Cook","year":"1990","unstructured":"Cook, W.R.: Object-oriented programming versus abstract data types. In: Stein, J. (ed.) REX Workshop\/School on the Foundations of Object-Oriented Languages. LNCS, vol.\u00a0173, pp. 151\u2013178. Springer, Heidelberg (1990)"},{"key":"13_CR5","unstructured":"Wadler, P.: The expression problem. Java Genericity Mailing list (November 1998)"},{"key":"13_CR6","unstructured":"Odersky, M., Zenger, M.: Independently extensible solutions to the expression problem. In: FOOL 2005 (2005)"},{"key":"13_CR7","doi-asserted-by":"crossref","unstructured":"Buchlovsky, P., Thielecke, H.: A type-theoretic reconstruction of the visitor pattern. In: MFPS XXI. Electronic Notes in Theoretical Computer Science (ENTCS) (2005)","DOI":"10.1016\/j.entcs.2005.11.061"},{"key":"13_CR8","doi-asserted-by":"crossref","unstructured":"Oliveira, B.C.d.S., Wang, M., Gibbons, J.: The visitor pattern as a reusable, generic, type-safe component. In: OOPSLA 2008 (2008)","DOI":"10.1145\/1449764.1449799"},{"key":"13_CR9","doi-asserted-by":"publisher","first-page":"135","DOI":"10.1016\/0304-3975(85)90135-5","volume":"39","author":"C. B\u00f6hm","year":"1985","unstructured":"B\u00f6hm, C., Berarducci, A.: Automatic synthesis of typed lambda-programs on term algebras. Theoretical Computer Science\u00a039, 135\u2013153 (1985)","journal-title":"Theoretical Computer Science"},{"issue":"2","key":"13_CR10","doi-asserted-by":"publisher","first-page":"335","DOI":"10.1016\/0304-3975(92)90042-E","volume":"94","author":"M. Parigot","year":"1992","unstructured":"Parigot, M.: Recursive programming with proofs. Theor. Comput. Sci.\u00a094(2), 335\u2013356 (1992)","journal-title":"Theor. Comput. Sci."},{"key":"13_CR11","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"E. Gamma","year":"1995","unstructured":"Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)"},{"key":"13_CR12","volume-title":"Proofs and types","author":"J.Y. Girard","year":"1989","unstructured":"Girard, J.Y., Taylor, P., Lafont, Y.: Proofs and types. Cambridge University Press, Cambridge (1989)"},{"key":"13_CR13","doi-asserted-by":"crossref","unstructured":"Moors, A., Piessens, F., Odersky, M.: Generics of a higher kind. In: OOPSLA 2008 (2008)","DOI":"10.1145\/1449764.1449798"},{"key":"13_CR14","first-page":"303","volume-title":"OOPSLA 1990","author":"G. Bracha","year":"1990","unstructured":"Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLA 1990, pp. 303\u2013311. ACM Press, New York (1990)"},{"key":"13_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"248","DOI":"10.1007\/978-3-540-45070-2_12","volume-title":"ECOOP 2003 - Object-Oriented Programming","author":"N. Sch\u00e4rli","year":"2003","unstructured":"Sch\u00e4rli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol.\u00a02743, pp. 248\u2013274. Springer, Heidelberg (2003)"},{"issue":"2","key":"13_CR16","doi-asserted-by":"publisher","first-page":"225","DOI":"10.1145\/641888.641891","volume":"25","author":"K. Bruce","year":"2003","unstructured":"Bruce, K., Schuett, A., van Gent, R., Fiech, A.: Polytoil: A type-safe polymorphic object-oriented language. ACM Trans. Program. Lang. Syst.\u00a025(2), 225\u2013290 (2003)","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"5","key":"13_CR17","doi-asserted-by":"publisher","first-page":"795","DOI":"10.1145\/1152649.1152650","volume":"28","author":"A. Igarashi","year":"2006","unstructured":"Igarashi, A., Viroli, M.: Variant parametric types: A flexible subtyping scheme for generics. ACM Trans. Program. Lang. Syst.\u00a028(5), 795\u2013847 (2006)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"13_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"123","DOI":"10.1007\/978-3-540-24851-4_6","volume-title":"ECOOP 2004 \u2013 Object-Oriented Programming","author":"M. Torgersen","year":"2004","unstructured":"Torgersen, M.: The expression problem revisited. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol.\u00a03086, pp. 123\u2013146. Springer, Heidelberg (2004)"},{"key":"13_CR19","doi-asserted-by":"crossref","unstructured":"Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: OOPSLA 2000, pp. 130\u2013145 (2000)","DOI":"10.1145\/354222.353181"},{"key":"13_CR20","doi-asserted-by":"crossref","unstructured":"Zenger, M., Odersky, M.: Extensible algebraic datatypes with defaults. In: ICFP 2001, pp. 241\u2013252 (2001)","DOI":"10.1145\/507635.507665"},{"key":"13_CR21","doi-asserted-by":"crossref","unstructured":"L\u00f6h, A., Hinze, R.: Open data types and open functions. In: PPDP 2006, pp. 133\u2013144 (2006)","DOI":"10.1145\/1140335.1140352"},{"key":"13_CR22","unstructured":"Poll, E.: Subtyping and inheritance for inductive types. In: Informal proceedings of the 1994 TYPES Workshop (1997)"},{"key":"13_CR23","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"169","DOI":"10.1007\/11531142_8","volume-title":"ECOOP 2005 - Object-Oriented Programming","author":"R.E. Lopez-Herrejon","year":"2005","unstructured":"Lopez-Herrejon, R.E., Batory, D.S., Cook, W.R.: Evaluating support for features in advanced modularization technologies. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol.\u00a03586, pp. 169\u2013194. Springer, Heidelberg (2005)"},{"key":"13_CR24","volume-title":"Types and Programming Languages","author":"B.C. Pierce","year":"2002","unstructured":"Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)"},{"key":"13_CR25","first-page":"373","volume-title":"Theoretical Aspects of Object-Oriented Programming","author":"L. Cardelli","year":"1994","unstructured":"Cardelli, L.: Extensible records in a pure calculus of subtyping. In: Theoretical Aspects of Object-Oriented Programming, pp. 373\u2013425. MIT Press, Cambridge (1994)"},{"issue":"5","key":"13_CR26","doi-asserted-by":"publisher","first-page":"25","DOI":"10.5381\/jot.2008.7.5.a2","volume":"7","author":"V. Cremet","year":"2008","unstructured":"Cremet, V., Altherr, P.: Adding type constructor parameterization to Java. Journal of Object Technology\u00a07(5), 25\u201365 (2008)","journal-title":"Journal of Object Technology"},{"key":"13_CR27","unstructured":"Odersky, M., et al.: An overview of the Scala programming language (2 nd edn.). Technical Report IC\/2006\/001, EPFL Lausanne, Switzerland (2006)"},{"issue":"6","key":"13_CR28","doi-asserted-by":"publisher","first-page":"805","DOI":"10.1145\/218570.218571","volume":"17","author":"C. Chambers","year":"1995","unstructured":"Chambers, C., Leavens, G.T.: Typechecking and modules for multimethods. ACM Transactions on Programming Languages and Systems\u00a017(6), 805\u2013843 (1995)","journal-title":"ACM Transactions on Programming Languages and Systems"},{"key":"13_CR29","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"419","DOI":"10.1007\/BFb0053389","volume-title":"ECOOP \u201997 - Object-Oriented Programming","author":"C. Prehofer","year":"1997","unstructured":"Prehofer, C.: Feature-oriented programming: A fresh look at objects. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol.\u00a01241, pp. 419\u2013443. Springer, Heidelberg (1997)"},{"key":"13_CR30","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"91","DOI":"10.1007\/BFb0054088","volume-title":"ECOOP \u201998 - Object-Oriented Programming","author":"S. Krishnamurthi","year":"1998","unstructured":"Krishnamurthi, S., Felleisen, M., Friedman, D.P.: Synthesizing object-oriented and functional design to promote re-use. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol.\u00a01445, pp. 91\u2013113. Springer, Heidelberg (1998)"},{"key":"13_CR31","doi-asserted-by":"crossref","unstructured":"Palsberg, J., Jay, C.B.: The essence of the visitor pattern. In: Proc. 22nd IEEE Int. Computer Software and Applications Conf., COMPSAC, pp. 9\u201315 (19-21 1998)","DOI":"10.1109\/CMPSAC.1998.716629"},{"key":"13_CR32","unstructured":"Vlissides, J.: Pattern hatching - visitor in frameworks (1999)"},{"key":"13_CR33","unstructured":"Martin, R.C.: The Dependency Inversion Principle. The C++ Report (May 1996)"},{"key":"13_CR34","doi-asserted-by":"crossref","unstructured":"Ingalls, D.H.H.: A simple technique for handling multiple polymorphism. In: OOPSLA 1986, pp. 347\u2013349 (1986)","DOI":"10.1145\/28697.28732"},{"key":"13_CR35","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"186","DOI":"10.1007\/BFb0054092","volume-title":"ECOOP \u201998 - Object-Oriented Programming","author":"M. Ernst","year":"1998","unstructured":"Ernst, M., Kaplan, C., Chambers, C.: Predicate dispatching: A unified theory of dispatch. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol.\u00a01445, pp. 186\u2013211. Springer, Heidelberg (1998)"},{"key":"13_CR36","doi-asserted-by":"crossref","unstructured":"Bruce, K.B.: Some challenging typing issues in object-oriented languages. Electr. Notes Theor. Comput. Sci. 82(7) (2003)","DOI":"10.1016\/S1571-0661(04)80799-0"},{"key":"13_CR37","unstructured":"Oliveira, B.C.d.S., Hinze, R., L\u00f6h, A.: Extensible and modular generics for the masses. In: TFP 2006, pp. 109\u2013138 (2006)"},{"key":"13_CR38","unstructured":"Oliveira, B.C.d.S.: Genericity, Extensibility and Type-Safety in the Visitor Pattern. PhD thesis, University of Oxford (2007)"},{"issue":"4","key":"13_CR39","doi-asserted-by":"publisher","first-page":"423","DOI":"10.1017\/S0956796808006758","volume":"18","author":"W. Swierstra","year":"2008","unstructured":"Swierstra, W.: Data types \u00e0 la carte. Journal of Functional Programming\u00a018(4), 423\u2013436 (2008)","journal-title":"Journal of Functional Programming"},{"key":"13_CR40","unstructured":"Garrigue, J.: Code reuse through polymorphic variants. In: Workshop on Foundations of Software Engineering, pp. 93\u2013100 (2000)"},{"key":"13_CR41","unstructured":"Ernst, E.: The expression problem, Scandinavian style. In: Lahire, P., et al. (eds.) MASPEGHI 2004 (2004)"},{"key":"13_CR42","first-page":"99","volume-title":"OOPSLA 2004","author":"N. Nystrom","year":"2004","unstructured":"Nystrom, N., Chong, S., Myers, A.C.: Scalable extensibility via nested inheritance. In: OOPSLA 2004, pp. 99\u2013115. ACM Press, New York (2004)"},{"key":"13_CR43","first-page":"21","volume-title":"OOPSLA 2006","author":"N. Nystrom","year":"2006","unstructured":"Nystrom, N., Qi, X., Myers, A.C.: J&: nested intersection for scalable software composition. In: OOPSLA 2006, pp. 21\u201336. ACM Press, New York (2006)"},{"key":"13_CR44","doi-asserted-by":"crossref","unstructured":"Qi, X., Myers, A.C.: Sharing classes between families. In: PLDI 2009 (June 2009)","DOI":"10.1145\/1542476.1542508"}],"container-title":["Lecture Notes in Computer Science","ECOOP 2009 \u2013 Object-Oriented Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-642-03013-0_13","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,21]],"date-time":"2019-05-21T15:52:35Z","timestamp":1558453955000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-642-03013-0_13"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2009]]},"ISBN":["9783642030123","9783642030130"],"references-count":44,"URL":"https:\/\/doi.org\/10.1007\/978-3-642-03013-0_13","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2009]]}}}