Bending without Breaking: Making Software More Flexible

Extended Abstract
  • Kim B. Bruce
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2890)


In this talk we discuss the problem of simultaneously refining mutually interdependent classes and object types. We discuss possible solutions using existing static type systems that include parametric polymorphism. A statically type-safe solution is presented that involves the introduction of type groups, a construct that can be understood as a generalization of the MyType construct introduced in a statically type-safe way in languages like PolyTOIL [3] and LOOM [2].


Type Group Functional Language Straightforward Solution Type Safety Visitor Pattern 
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.
    Birtwistle, G.M., Dahl, O.-J., Myhrhaug, B., Nygaard, K.: SIMULA Begin. Aurbach (1973)Google Scholar
  2. 2.
    Bruce, K.B., Fiech, A., Petersen, L.: Subtyping is not a good “match” for object-oriented languages. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 104–127. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  3. 3.
    Bruce, K.B., Schuett, A., van Gent, R.: PolyTOIL: A type-safe polymorphic object-oriented language. TOPLAS 25(2), 225–290 (2003)CrossRefGoogle Scholar
  4. 4.
    Bruce, K.B., Vanderwaart, J.C.: Semantics-driven language design: Statically type-safe virtual types in object-oriented languages. In: Electronic notes in Theoretical Computer Science, vol. 20, 26 pages (1999), URL:
  5. 5.
    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
  6. 6.
    Bruce, K.: Foundations of Object-Oriented Languages: Types and Semantics. MIT Press, Cambridge (2002)Google 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.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Abstraction and reuse of object-oriented designs. Addison-Wesley, Reading (1994)Google Scholar
  9. 9.
    Goldberg, A., Robson, D.: Smalltalk–80: The language and its implementation. Addison-Wesley, Reading (1983)zbMATHGoogle Scholar
  10. 10.
    Kristensen, B.B., Madsen, O.L., Moller-Pedersen, B., Nygaard, K.: The beta programming language. In: Shriver, B., Wegner, P. (eds.) Research Directions in Object-Oriented Programming, pp. 7–48. M.I.T. Press, CambridgeGoogle Scholar
  11. 11.
    Madsen, O.L., Moller-Pedersen, B.: Virtual classes: A powerful mechanism in object-oriented programming. In: OOPSLA 1989 Proceedings, pp. 397–406 (1989)Google Scholar
  12. 12.
    Meyer, B.: Eiffel: the language. Prentice-Hall, Englewood Cliffs (1992)zbMATHGoogle Scholar
  13. 13.
    Wadler, P.: The expression problem. Message to Java-genericity electronic mail list, November 12 (1998)Google Scholar
  14. 14.
    Cook, W.: Object-oriented programming versus abstract data types. In: Proc. of the REX Workshop/School on the Foundations of Object-Oriented Languages (FOOL). LNCS, vol. 173, pp. 151–178. Springer, Heidelberg (1990)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Kim B. Bruce
    • 1
  1. 1.Department of Computer ScienceWilliams CollegeWilliamstownUSA

Personalised recommendations