{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,16]],"date-time":"2025-12-16T12:18:26Z","timestamp":1765887506894},"publisher-location":"Berlin, Heidelberg","reference-count":54,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"type":"print","value":"9783642390371"},{"type":"electronic","value":"9783642390388"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2013]]},"DOI":"10.1007\/978-3-642-39038-8_2","type":"book-chapter","created":{"date-parts":[[2013,6,25]],"date-time":"2013-06-25T14:29:00Z","timestamp":1372170540000},"page":"27-51","source":"Crossref","is-referenced-by-count":28,"title":["Feature-Oriented Programming with Object Algebras"],"prefix":"10.1007","author":[{"given":"Bruno C. d. S.","family":"Oliveira","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Tijs","family":"van der Storm","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Alex","family":"Loh","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"William R.","family":"Cook","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","reference":[{"key":"2_CR1","doi-asserted-by":"crossref","unstructured":"Apel, S., K\u00e4stner, C., Gr\u00f6sslinger, A., Lengauer, C.: Type safety for feature-oriented product lines. Automated Software Engg.\u00a017(3) (September 2010)","DOI":"10.1007\/s10515-010-0066-8"},{"key":"2_CR2","doi-asserted-by":"crossref","unstructured":"Apel, S., Kastner, C., Lengauer, C.: Featurehouse: Language-independent, automated software composition. In: ICSE 2009 (2009)","DOI":"10.1109\/ICSE.2009.5070523"},{"key":"2_CR3","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"125","DOI":"10.1007\/11561347_10","volume-title":"Generative Programming and Component Engineering","author":"S. Apel","year":"2005","unstructured":"Apel, S., Leich, T., Rosenm\u00fcller, M., Saake, G.: Featurec++: On the symbiosis of feature-oriented and aspect-oriented programming. In: Gl\u00fcck, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol.\u00a03676, pp. 125\u2013140. Springer, Heidelberg (2005)"},{"key":"2_CR4","doi-asserted-by":"crossref","unstructured":"Apel, S., Leich, T., Saake, G.: Aspectual mixin layers: aspects and features in concert. In: ICSE 2006 (2006)","DOI":"10.1145\/1134285.1134304"},{"issue":"5","key":"2_CR5","doi-asserted-by":"publisher","first-page":"49","DOI":"10.5381\/jot.2009.8.5.c5","volume":"8","author":"S. Apel","year":"2009","unstructured":"Apel, S., K\u00e4stner, C.: An overview of feature-oriented software development. Journal of Object Technology\u00a08(5), 49\u201384 (2009)","journal-title":"Journal of Object Technology"},{"issue":"6","key":"2_CR6","doi-asserted-by":"publisher","first-page":"355","DOI":"10.1109\/TSE.2004.23","volume":"30","author":"D. Batory","year":"2004","unstructured":"Batory, D., Sarvela, J., Rauschmayer, A.: Scaling step-wise refinement. IEEE Trans. on Softw. Eng.\u00a030(6), 355\u2013371 (2004)","journal-title":"IEEE Trans. on Softw. Eng."},{"key":"2_CR7","doi-asserted-by":"crossref","unstructured":"B\u00f6hm, C., Berarducci, A.: Automatic synthesis of typed lambda-programs on term algebras. Theor. Comput. Sci., 135\u2013154 (1985)","DOI":"10.1016\/0304-3975(85)90135-5"},{"key":"2_CR8","doi-asserted-by":"crossref","unstructured":"Bracha, G., Ungar, D.: Mirrors: design principles for meta-level facilities of object-oriented programming languages. In: OOPSLA 2004 (2004)","DOI":"10.1145\/1028976.1029004"},{"key":"2_CR9","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)"},{"key":"2_CR10","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_CR11","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"},{"issue":"5","key":"2_CR12","doi-asserted-by":"crossref","first-page":"469","DOI":"10.1017\/S0960129500070043","volume":"6","author":"A.B. Compagnoni","year":"1996","unstructured":"Compagnoni, A.B., Pierce, B.C.: Higher-order intersection types and multiple inheritance. Math. Structures Comput. Sci.\u00a06(5), 469\u2013501 (1996)","journal-title":"Math. Structures Comput. Sci."},{"key":"2_CR13","doi-asserted-by":"crossref","unstructured":"Cook, W.R., Palsberg, J.: A denotational semantics of inheritance and its correctness. In: OOPSLA 1989 (1989)","DOI":"10.1145\/74877.74922"},{"key":"2_CR14","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_CR15","doi-asserted-by":"publisher","first-page":"139","DOI":"10.1007\/BF02011875","volume":"19","author":"M. Coppo","year":"1978","unstructured":"Coppo, M., Dezani-Ciancaglini, M.: A new type-assignment for \u03bb-terms. Archiv. Math. Logik\u00a019, 139\u2013156 (1978)","journal-title":"Archiv. Math. Logik"},{"key":"2_CR16","doi-asserted-by":"crossref","unstructured":"Damiani, F., Padovani, L., Schaefer, I.: A formal foundation for dynamic delta-oriented software product lines. In: GPCE 2012 (2012)","DOI":"10.1145\/2371401.2371403"},{"key":"2_CR17","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: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol.\u00a02072, pp. 303\u2013326. Springer, Heidelberg (2001)"},{"key":"2_CR18","doi-asserted-by":"crossref","unstructured":"Ernst, E.: Safe dynamic multiple inheritance. Nordic J. of Computing\u00a09(3) (2002)","DOI":"10.7146\/dpb.v31i556.7113"},{"key":"2_CR19","doi-asserted-by":"crossref","unstructured":"Ernst, E., Ostermann, K., Cook, W.R.: A virtual class calculus. In: POPL 2006 (2006)","DOI":"10.1145\/1111037.1111062"},{"key":"2_CR20","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_CR21","unstructured":"van Gurp, J., Bosch, J., Svahnberg, M.: On the notion of variability in software product lines. In: Proceedings of the Working IEEE\/IFIP Conference on Software Architecture (WICSA 2001). IEEE Computer Society (2001)"},{"key":"2_CR22","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"},{"key":"2_CR23","doi-asserted-by":"crossref","unstructured":"Harrison, W., Ossher, H.: Subject-oriented programming (A critique of pure objects). In: OOPSLA 1993 (1993)","DOI":"10.1145\/165854.165932"},{"issue":"4-5","key":"2_CR24","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_CR25","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_CR26","unstructured":"Jones, P., Wollrath, A., Scheifler, R., et al.: Method and system for dynamic proxy classes, US Patent 6,877,163 (2005)"},{"key":"2_CR27","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"220","DOI":"10.1007\/BFb0053381","volume-title":"ECOOP \u201997 - Object-Oriented Programming","author":"G. Kiczales","year":"1997","unstructured":"Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J., Irwin, J.: Aspect-oriented programming. In: Ak\u015fit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol.\u00a01241, pp. 220\u2013242. Springer, Heidelberg (1997)"},{"key":"2_CR28","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., Cook, W.: Evaluating support for features in advanced modularization technologies. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol.\u00a03586, pp. 169\u2013194. Springer, Heidelberg (2005)"},{"issue":"1","key":"2_CR29","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1017\/S0956796807006326","volume":"18","author":"C. McBride","year":"2008","unstructured":"McBride, C., Paterson, R.: Applicative programming with effects. Journal of Functional Programming\u00a018(1), 1\u201313 (2008)","journal-title":"Journal of Functional Programming"},{"key":"2_CR30","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_CR31","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_CR32","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_CR33","unstructured":"Odersky, M.: The Scala Language Specification, Version 2.9. EPFL (2011), http:\/\/www.scala-lang.org\/docu\/files\/ScalaReference.pdf"},{"key":"2_CR34","doi-asserted-by":"crossref","unstructured":"Odersky, M., Zenger, M.: Scalable component abstractions. In: OOPSLA 2005 (2005)","DOI":"10.1145\/1094811.1094815"},{"key":"2_CR35","doi-asserted-by":"publisher","first-page":"797","DOI":"10.1017\/S0956796812000354","volume":"22","author":"B.C.d.S. Oliveira","year":"2012","unstructured":"Oliveira, B.C.d.S., Schrijvers, T., Cook, W.R.: Mri: Modular reasoning about interference in incremental programming. Journal of Functional Programming\u00a022, 797\u2013852 (2012)","journal-title":"Journal of Functional Programming"},{"key":"2_CR36","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_CR37","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"2","DOI":"10.1007\/978-3-642-31057-7_2","volume-title":"ECOOP 2012 \u2013 Object-Oriented Programming","author":"B.C.d.S. Oliveira","year":"2012","unstructured":"Oliveira, B.C.d.S., Cook, W.R.: Extensibility for the masses: Practical extensibility with object algebras. In: Noble, J. (ed.) ECOOP 2012. LNCS, vol.\u00a07313, pp. 2\u201327. Springer, Heidelberg (2012)"},{"key":"2_CR38","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_CR39","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_CR40","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_CR41","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_CR42","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"89","DOI":"10.1007\/3-540-47993-7_4","volume-title":"ECOOP 2002 - Object-Oriented Programming","author":"K. Ostermann","year":"2002","unstructured":"Ostermann, K.: Dynamically composable collaborations with delegation layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol.\u00a02374, pp. 89\u2013110. Springer, Heidelberg (2002)"},{"key":"2_CR43","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: Ak\u015fit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol.\u00a01241, pp. 419\u2013443. Springer, Heidelberg (1997)"},{"key":"2_CR44","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_CR45","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_CR46","doi-asserted-by":"crossref","unstructured":"Schaefer, I., Bettini, L., Damiani, F.: Compositional type-checking for delta-oriented programming. In: AOSD 2011 (2011)","DOI":"10.1145\/1960275.1960283"},{"key":"2_CR47","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"550","DOI":"10.1007\/BFb0054107","volume-title":"ECOOP \u201998 - Object-Oriented Programming","author":"Y. Smaragdakis","year":"1998","unstructured":"Smaragdakis, Y., Batory, D.: Implementing layered designs with mixin layers. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol.\u00a01445, pp. 550\u2013570. Springer, Heidelberg (1998)"},{"key":"2_CR48","doi-asserted-by":"crossref","unstructured":"Tarr, P., Ossher, H., Harrison, W., Sutton Jr., S.M.: N degrees of separation: multi-dimensional separation of concerns. In: ICSE 1999 (1999)","DOI":"10.1145\/302405.302457"},{"key":"2_CR49","doi-asserted-by":"crossref","unstructured":"Thaker, S., Batory, D., Kitchin, D., Cook, W.: Safe composition of product lines. In: GPCE 2007 (2007)","DOI":"10.1145\/1289971.1289989"},{"key":"2_CR50","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: Odersky, M. (ed.) ECOOP 2004. LNCS, vol.\u00a03086, pp. 123\u2013146. Springer, Heidelberg (2004)"},{"key":"2_CR51","unstructured":"Wadler, P.: The Expression Problem. Email, discussion on the Java Genericity mailing list (November 1998)"},{"key":"2_CR52","doi-asserted-by":"crossref","unstructured":"Wehr, S., Thiemann, P.: JavaGI: The interaction of type classes with interfaces and inheritance. ACM Trans. Program. Lang. Syst.\u00a033 (July 2011)","DOI":"10.1145\/1985342.1985343"},{"key":"2_CR53","doi-asserted-by":"crossref","unstructured":"Zenger, M., Odersky, M.: Extensible algebraic datatypes with defaults. In: ICFP 2001 (2001)","DOI":"10.1145\/507663.507665"},{"key":"2_CR54","unstructured":"Zenger, M., Odersky, M.: Independently extensible solutions to the expression problem. In: FOOL 2005 (2005)"}],"container-title":["Lecture Notes in Computer Science","ECOOP 2013 \u2013 Object-Oriented Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-642-39038-8_2","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,7,2]],"date-time":"2023-07-02T16:00:37Z","timestamp":1688313637000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-642-39038-8_2"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013]]},"ISBN":["9783642390371","9783642390388"],"references-count":54,"URL":"https:\/\/doi.org\/10.1007\/978-3-642-39038-8_2","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2013]]}}}