{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T09:29:27Z","timestamp":1770283767955,"version":"3.49.0"},"publisher-location":"Berlin, Heidelberg","reference-count":50,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783642310560","type":"print"},{"value":"9783642310577","type":"electronic"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2012]]},"DOI":"10.1007\/978-3-642-31057-7_2","type":"book-chapter","created":{"date-parts":[[2012,6,28]],"date-time":"2012-06-28T11:17:41Z","timestamp":1340882261000},"page":"2-27","source":"Crossref","is-referenced-by-count":45,"title":["Extensibility for the Masses"],"prefix":"10.1007","author":[{"given":"Bruno C. d. S.","family":"Oliveira","sequence":"first","affiliation":[]},{"given":"William R.","family":"Cook","sequence":"additional","affiliation":[]}],"member":"297","reference":[{"key":"2_CR1","doi-asserted-by":"crossref","unstructured":"Bierman, G.M., Meijer, E., Torgersen, M.: Lost in translation: formalizing proposed extensions to C#. In: OOPSLA 2007 (2007)","DOI":"10.1145\/1297027.1297063"},{"key":"2_CR2","doi-asserted-by":"crossref","unstructured":"Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLA\/ECOOP 1990 (1990)","DOI":"10.1145\/97945.97982"},{"issue":"8","key":"2_CR3","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1016\/S1571-0661(04)80799-0","volume":"82","author":"K. Bruce","year":"2003","unstructured":"Bruce, K.: Some challenging typing issues in object-oriented languages: Extended abstract. Electronic Notes in Theoretical Computer Science\u00a082(8), 1\u201329 (2003)","journal-title":"Electronic Notes in Theoretical Computer Science"},{"key":"2_CR4","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"523","DOI":"10.1007\/BFb0054106","volume-title":"ECOOP \u201998 - Object-Oriented Programming","author":"K.B. Bruce","year":"1998","unstructured":"Bruce, K.B., Odersky, M., Wadler, P.: A Statically Safe Alternative to Virtual Types. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol.\u00a01445, pp. 523\u2013549. Springer, Heidelberg (1998)"},{"issue":"0","key":"2_CR5","doi-asserted-by":"publisher","first-page":"309","DOI":"10.1016\/j.entcs.2005.11.061","volume":"155","author":"P. Buchlovsky","year":"2006","unstructured":"Buchlovsky, P., Thielecke, H.: A type-theoretic reconstruction of the visitor pattern. Electronic Notes in Theoretical Computer Science\u00a0155(0), 309\u2013329 (2006)","journal-title":"Electronic Notes in Theoretical Computer Science"},{"key":"2_CR6","doi-asserted-by":"crossref","unstructured":"Canning, P., Cook, W., Hill, W., Olthoff, W., Mitchell, J.C.: F-bounded polymorphism for object-oriented programming. In: FPCA 1989 (1989)","DOI":"10.1145\/99370.99392"},{"key":"2_CR7","doi-asserted-by":"publisher","first-page":"509","DOI":"10.1017\/S0956796809007205","volume":"19","author":"J. Carette","year":"2009","unstructured":"Carette, J., Kiselyov, O., Shan, C.C.: Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages. J. Funct. Program.\u00a019, 509\u2013543 (2009)","journal-title":"J. Funct. Program."},{"key":"2_CR8","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 Trans. Program. Lang. Syst.\u00a017, 805\u2013843 (1995)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2_CR9","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 (2000)","DOI":"10.1145\/353171.353181"},{"key":"2_CR10","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"151","DOI":"10.1007\/BFb0019443","volume-title":"Foundations of Object-Oriented Languages","author":"W.R. Cook","year":"1991","unstructured":"Cook, W.R.: Object-Oriented Programming Versus Abstract Data Types. In: de Bakker, J.W., Rozenberg, G., de Roever, W.-P. (eds.) REX 1990. LNCS, vol.\u00a0489, pp. 151\u2013178. Springer, Heidelberg (1991)"},{"key":"2_CR11","unstructured":"Duponcheel, L.: Using catamorphisms, subtypes and monad transformers for writing modular functional interpreters (1995), http:\/\/citeseerx.ist.psu.edu\/viewdoc\/summary?doi=10.1.1.11.7093"},{"key":"2_CR12","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"303","DOI":"10.1007\/3-540-45337-7_17","volume-title":"ECOOP 2001 - Object-Oriented Programming","author":"E. Ernst","year":"2001","unstructured":"Ernst, E.: Family Polymorphism. In: Lee, S.H. (ed.) ECOOP 2001. LNCS, vol.\u00a02072, pp. 303\u2013326. Springer, Heidelberg (2001)"},{"key":"2_CR13","unstructured":"Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addisson-Wesley professional computing series. Addisson-Wesley (1994)"},{"key":"2_CR14","unstructured":"Garrigue, J.: Programming with polymorphic variants (1998)"},{"key":"2_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"327","DOI":"10.1007\/978-3-540-30477-7_22","volume-title":"Programming Languages and Systems","author":"N. Ghani","year":"2004","unstructured":"Ghani, N., Uustalu, T., Vene, V.: Build, Augment and Destroy, Universally. In: Chin, W.-N. (ed.) APLAS 2004. LNCS, vol.\u00a03302, pp. 327\u2013347. Springer, Heidelberg (2004)"},{"key":"2_CR16","doi-asserted-by":"crossref","unstructured":"Gibbons, J.: Design patterns as higher-order datatype-generic programs. In: WGP 2006 (2006)","DOI":"10.1145\/1159861.1159863"},{"key":"2_CR17","unstructured":"Girard, J.-Y., Lafont, Y., Taylor, P.: Proofs and Types. Cambridge Tracts in Theoretical Computer Science, vol.\u00a07. Cambridge University Press (1989)"},{"key":"2_CR18","doi-asserted-by":"crossref","unstructured":"Guttag, J.V., Horning, J.J.: The algebraic specification of abstract data types. Acta Informatica (1978)","DOI":"10.1007\/BF00260922"},{"issue":"4-5","key":"2_CR19","doi-asserted-by":"publisher","first-page":"451","DOI":"10.1017\/S0956796806006022","volume":"16","author":"R. Hinze","year":"2006","unstructured":"Hinze, R.: Generics for the masses. Journal of Functional Programming\u00a016(4-5), 451\u2013483 (2006)","journal-title":"Journal of Functional Programming"},{"key":"2_CR20","doi-asserted-by":"crossref","unstructured":"Hofer, C., Ostermann, K., Rendel, T., Moors, A.: Polymorphic embedding of DSLs. In: GPCE 2008 (2008)","DOI":"10.1145\/1449913.1449935"},{"key":"2_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"242","DOI":"10.1007\/BFb0026992","volume-title":"Category Theory and Computer Science","author":"P. Hoogendijk","year":"1997","unstructured":"Hoogendijk, P., Backhouse, R.: When Do Datatypes Commute? In: Moggi, E., Rosolini, G. (eds.) CTCS 1997. LNCS, vol.\u00a01290, pp. 242\u2013260. Springer, Heidelberg (1997)"},{"key":"2_CR22","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"595","DOI":"10.1007\/978-3-642-03013-0_27","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"A. Ibrahim","year":"2009","unstructured":"Ibrahim, A., Jiao, Y., Tilevich, E., Cook, W.R.: Remote Batch Invocation for Compositional Object Services. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 595\u2013617. Springer, Heidelberg (2009)"},{"key":"2_CR23","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":"2_CR24","doi-asserted-by":"crossref","unstructured":"L\u00f6h, A., Hinze, R.: Open data types and open functions. In: PPDP 2006 (2006)","DOI":"10.1145\/1140335.1140352"},{"key":"2_CR25","doi-asserted-by":"crossref","unstructured":"Madsen, O.L., Moller-Pedersen, B.: Virtual classes: a powerful mechanism in object-oriented programming. In: OOPSLA 1989 (1989)","DOI":"10.1145\/74877.74919"},{"key":"2_CR26","unstructured":"Malcolm, G.: Algebraic Data Types and Program Transformation. Ph.D. thesis, Rijksuniversiteit Groningen (September 1990)"},{"key":"2_CR27","doi-asserted-by":"crossref","unstructured":"McDirmid, S., Flatt, M., Hsieh, W.C.: Jiazzi: new-age components for old-fashioned java. In: OOPSLA 2001 (2001)","DOI":"10.1145\/504282.504298"},{"key":"2_CR28","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":"2_CR29","doi-asserted-by":"crossref","unstructured":"Nystrom, N., Qi, X., Myers, A.C.: J&: nested intersection for scalable software composition. In: OOPSLA 2006 (2006)","DOI":"10.1145\/1167473.1167476"},{"key":"2_CR30","unstructured":"Oliveira, B.C.d.S.: Genericity, extensibility and type-safety in the Visitor pattern. Ph.D. thesis, Oxford University Computing Laboratory (2007)"},{"key":"2_CR31","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"269","DOI":"10.1007\/978-3-642-03013-0_13","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"B.C.d.S. Oliveira","year":"2009","unstructured":"Oliveira, B.C.d.S.: Modular Visitor Components. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 269\u2013293. Springer, Heidelberg (2009)"},{"key":"2_CR32","doi-asserted-by":"crossref","unstructured":"Oliveira, B.C.d.S., Gibbons, J.: Typecase: a design pattern for type-indexed functions. In: Haskell 2005 (2005)","DOI":"10.1145\/1088348.1088358"},{"key":"2_CR33","doi-asserted-by":"crossref","unstructured":"Oliveira, B.C.d.S., Hinze, R., L\u00f6h, A.: Extensible and modular generics for the masses. In: Trends in Functional Programming (2006)","DOI":"10.2307\/j.ctv36xvknz.15"},{"key":"2_CR34","doi-asserted-by":"crossref","unstructured":"Oliveira, B.C.d.S., Moors, A., Odersky, M.: Type classes as objects and implicits. In: OOPSLA 2010 (2010)","DOI":"10.1145\/1869459.1869489"},{"key":"2_CR35","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":"2_CR36","unstructured":"Palsberg, J., Jay, C.B.: The essence of the visitor pattern. In: COMPSAC 1998 (1998)"},{"key":"2_CR37","doi-asserted-by":"crossref","unstructured":"Peyton\u00a0Jones, S., Vytiniotis, D., Weirich, S., Washburn, G.: Simple unification-based type inference for GADTs. In: ICFP 2006 (2006)","DOI":"10.1145\/1159803.1159811"},{"key":"2_CR38","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, pp. 157\u2013168 (1975)"},{"key":"2_CR39","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"408","DOI":"10.1007\/3-540-06859-7_148","volume-title":"Programming Symposium","author":"J.C. Reynolds","year":"1974","unstructured":"Reynolds, J.C.: Towards a Theory of Type Structure. In: Robinet, B. (ed.) Programming Symposium. LNCS, vol.\u00a019, pp. 408\u2013425. Springer, Heidelberg (1974)"},{"key":"2_CR40","doi-asserted-by":"crossref","unstructured":"Saito, C., Igarashi, A.: The essence of lightweight family polymorphism. Journal of Object Technology, 67\u201399 (2008)","DOI":"10.5381\/jot.2008.7.5.a3"},{"key":"2_CR41","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. Scharli","year":"2003","unstructured":"Scharli, N., Ducasse, S., Nierstrasz, O., Black, A.P.: Traits: Composable Units of Behaviour. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol.\u00a02743, pp. 248\u2013274. Springer, Heidelberg (2003)"},{"issue":"4","key":"2_CR42","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":"2_CR43","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 \u2013 Four New Solutions Using Generics. In: Vetta, A. (ed.) ECOOP 2004. LNCS, vol.\u00a03086, pp. 123\u2013146. Springer, Heidelberg (2004)"},{"key":"2_CR44","doi-asserted-by":"crossref","unstructured":"Torgersen, M., Hansen, C.P., Ernst, E., von\u00a0der Ah\u00e9, P., Bracha, G., Gafter, N.: Adding wildcards to the Java programming language. In: SAC 2004 (2004)","DOI":"10.1145\/967900.968162"},{"key":"2_CR45","doi-asserted-by":"crossref","unstructured":"Visser, J.: Visitor combination and traversal control. In: OOPSLA 2001 (2001)","DOI":"10.1145\/504282.504302"},{"key":"2_CR46","unstructured":"Wadler, P.: The Expression Problem. Email (November 1998), discussion on the Java Genericity mailing list"},{"key":"2_CR47","doi-asserted-by":"crossref","unstructured":"Wehr, S., Thiemann, P.: JavaGI: The interaction of type classes with interfaces and inheritance. ACM Trans. Program. Lang. Syst. 33 (July 2011)","DOI":"10.1145\/1985342.1985343"},{"key":"2_CR48","unstructured":"Wiedermann, B., Cook, W.R.: Remote batch invocation for SQL databases. In: The 13th International Symposium on Database Programming Languages, DBPL (2011)"},{"key":"2_CR49","doi-asserted-by":"crossref","unstructured":"Zenger, M., Odersky, M.: Extensible algebraic datatypes with defaults. In: ICFP 2001 (2001)","DOI":"10.1145\/507635.507665"},{"key":"2_CR50","unstructured":"Zenger, M., Odersky, M.: Independently extensible solutions to the expression problem. In: FOOL 2005 (2005)"}],"container-title":["Lecture Notes in Computer Science","ECOOP 2012 \u2013 Object-Oriented Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-642-31057-7_2.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,6,23]],"date-time":"2023-06-23T23:21:27Z","timestamp":1687562487000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-642-31057-7_2"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012]]},"ISBN":["9783642310560","9783642310577"],"references-count":50,"URL":"https:\/\/doi.org\/10.1007\/978-3-642-31057-7_2","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012]]}}}