Higher-Order Hierarchies

  • Erik Ernst
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2743)


This paper introduces the notion of higher-order inheritance hierarchies. They are useful because they provide well-known benefits of object-orientation at the level of entire hierarchies—benefits which are not available with current approaches. Three facets must be adressed: First, it must be possible to create hierarchies incrementally based on existing hierarchies, such that commonalities are expressed via reuse, not duplication. Second, the hierarchies must themselves be organized into hierarchies, such that their relationships are made explicit and can be exploited in a type safe manner. Finally, it must be possible to write generic code that works on every hierarchy derived from the hierarchy for which it was written. This paper presents a language design that supports such a notion of higher-order hierarchies. It has been implemented in context of a full-fledged, statically typed language.


Class Hierarchy Method Implementation Part Object Type Check Combination Operator 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aksit, M.: On the Design of the Object-Oriented Language Sina. PhD thesis, University of Twente, Enschede, The Netherlands (1989)Google Scholar
  2. 2.
    Bruce, K., Odersky, M., Wadler, P.: A statically safe alternative to virtual types. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 523–549. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  3. 3.
    Chambers, C.: The Cecil Language, Specification and Rationale. Dept. of Comp.Sci. and Eng., Univ. of Washington, Seattle, Washington (1997)Google Scholar
  4. 4.
    Cook, W.R.: A Denotational Semantics of Inheritance. PhD thesis, Brown University (1989)Google Scholar
  5. 5.
    Ernst, E.: gbeta – A Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhDthesis, Devise, Department of Computer Science, University of Aarhus, Aarhus, Denmark (June 1999)Google Scholar
  6. 6.
    Ernst, E.: Propagating class and method combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  7. 7.
    Ernst, E.: Family polymorphism. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  8. 8.
    Ernst, E.: Safe dynamic multiple inheritance. Nordic Journal of Computing 9(2002), 191–208 (2002)zbMATHGoogle Scholar
  9. 9.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)Google Scholar
  10. 10.
    Goldberg, A., Robson, D.: Smalltalk–80: The Language. Addison-Wesley, Reading (1989)zbMATHGoogle Scholar
  11. 11.
    Harrison, W., Ossher, H.: Subject-oriented programming (A critique of pure objects). In: Proceedings OOPSLA 1993, ACM SIGPLAN Notices, vol. 28(10), pp. 411–428 (October 1993)Google Scholar
  12. 12.
    Igarashi, A., Pierce, B.C.: Foundations for virtual types. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, p. 161. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  13. 13.
    Jones, S.P.: Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003) (to appear)Google Scholar
  14. 14.
    Joy, B., Steele, G., Gosling, J., Bracha, G.: Java(TM) Language Specification, 2nd edn. Addison-Wesley Publishing Company, Reading (2000)Google Scholar
  15. 15.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  16. 16.
    Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  17. 17.
    Liskov, B.: Data abstraction and hierarchy. ACM SIGPLAN Notices 23(5), 17–34 (1988); Revised version of the keynote address given at OOPSLA 1987 CrossRefGoogle Scholar
  18. 18.
    Litvinov, V.: Constraint-based polymorphism in Cecil: Towards a practical and static type system. In: Chambers, C. (ed.) Proceedings OOPSLA 1998, ACM SIGPLAN Notices, Vancouver, vol. 33(10). ACM Press, New York (1998)Google Scholar
  19. 19.
    Madsen, O.L.: Semantic analysis of virtual classes and nested classes. In: Northrop, L.M. (ed.) Proceedings OOPSLA 1999, ACM SIGPLAN Notices, Denver, vol. 34(10). ACM Press, New York (1999)Google Scholar
  20. 20.
    Madsen, O.L., Møller-Pedersen, B.: Virtual classes: A powerful mechanism in object-oriented programming. In: Proceedings OOPSLA 1989, ACM SIGPLAN Notices, vol. 24(10), pp. 397–406 (October 1989)Google Scholar
  21. 21.
    Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, Reading (1993)Google Scholar
  22. 22.
    McDirmid, S., Flatt, M., Hsieh, W.: Jiazzi: New-age components for old-fashioned Java. In: Proceedings of OOPSLA 2001, SIGPLAN Notices, vol. 36(11), pp. 211–222. ACM, New York (2001)Google Scholar
  23. 23.
    Meyer, B.: Object-oriented Software Construction, 2nd edn. Prentice Hall, New York (1997)zbMATHGoogle Scholar
  24. 24.
    Mezini, M., Lieberherr, K.: Adaptive plug-and-play components for evolutionary software development. ACM SIGPLAN Notices 33(10), 97–116 (1998)CrossRefGoogle Scholar
  25. 25.
    Mira Mezini and Klaus Ostermann. Integrating independent components with on-demand remodularization. In Cindy Norris and Jr. James B. Fenwick, editors, Proceedings of OOPSLA’02, volume 37, 11 of ACM SIGPLAN Notices, pages 52–67, New York, November 4–8 2002. ACM Press. 324 Google Scholar
  26. 26.
    Milner, R., Tofte, M., Harper, R.W., MacQueen, D.: The Definition of Standard ML. MIT Press, Cambridge (1997)Google Scholar
  27. 27.
    Odersky, M.: Report on the programming language Scala. Technical report, Ecole Polytechnique Federale de Lausanne (2002)Google Scholar
  28. 28.
    Ossher, H., Harrison, W.: Combination of inheritance hierarchies. In: Proceedings OOPSLA 1992, pp. 25–40 (October 1992)Google Scholar
  29. 29.
    Ostermann, K.: Dynamically composable collaborations with delegation layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 89–110. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  30. 30.
    Smaragdakis, Y., Batory, D.: Implementing layered design with mixin layers. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 550–570. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  31. 31.
    Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (1997)Google Scholar
  32. 32.
    Thomsen, K.S.: Multiple Inheritance, a Structuring Mechanism for Data, Processes and Procedures. Datalogisk afdeling, AArhus Universitet, Århus, Denmark (1986), DAIMI PB-209Google Scholar
  33. 33.
    Thorup, K.K.: Genericity in Java with virtual types. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 444–471. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  34. 34.
    Torgersen, M.: Virtual types are statically safe. In: 5th Workshop on Foundations of Object-Oriented Languages (FOOL) (January 1998), at
  35. 35.
    Winskel, G.: The Formal Semantics of Programming Languages – an Introduction. Foundations of Computing Series. MIT Press, London (1993)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Erik Ernst
    • 1
  1. 1.Dept. of Computer ScienceUniversity of AarhusDenmark

Personalised recommendations