Parameterized Modules for Classes and Extensible Functions

  • Keunwoo Lee
  • Craig Chambers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4067)


We present F(Eml), a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules. Parameterized modules permit subclasses and function extensions to be defined and typechecked once, and then reused to extend multiple argument modules. F(Eml)’s predecessor, Eml, supported classes and extensible functions with multiple dispatch, but its support for parameterized modules was weak. F(Eml)’s key novel features are alias declarations, generalized type relations in module signatures, and a nontrivial definition of signature subsumption.


Parameterized Module Abstract Class Argument Type Extension Type Deduction Rule 
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.
    Ancona, D., Zucca, E.: True Modules for Java-like Languages. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, Springer, Heidelberg (2001)CrossRefGoogle Scholar
  2. 2.
    Aracic, I., Gasiunas, V., Mezini, M., Ostermann, K.: An Overview of CaesarJ. In: Rashid, A., Aksit, M. (eds.) Transactions on Aspect-Oriented Software Development I. LNCS, vol. 3880, pp. 135–173. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  3. 3.
    Bonniot, D.: Type-checking multi-methods in ML (A modular approach). In: FOOL 9 (2002)Google Scholar
  4. 4.
    Bourdoncle, F., Merz, S.: Type checking higher-order polymorphic multi-methods. In: 24th POPL (1997)Google Scholar
  5. 5.
    Bracha, G., Cook, W.: Mixin-based Inheritance. In: OOPSLA (1990)Google Scholar
  6. 6.
    Bracha, G., Odersky, M., Stoutamire, D., Wadler, P.: Making the Future Safe for the Past: Adding Genericity to the Java Programming Language. In: OOPSLA (1998)Google Scholar
  7. 7.
    Bruce, K.B., Odersky, M., Wadler, P.: A Statically safe alternative to virtual types. In: 12th ECOOP (1998)Google Scholar
  8. 8.
    Chambers, C.: Object-Oriented Multi-Methods in Cecil. In: 6th ECOOP (1992)Google Scholar
  9. 9.
    Chambers, C.: Cecil Group. The Cecil Language: Specification and Rationale. Univ. of Washington Technical Report UW-CSE-93-03-05, 1993-2004Google Scholar
  10. 10.
    Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java. In: OOPSLA (2000)Google Scholar
  11. 11.
    Dreyer, D., Crary, K., Harper, R.: A Type System for Higher-Order Modules. In: 30th POPL (2003)Google Scholar
  12. 12.
    Duggan, D., Sourelis, C.: Mixin modules. In: First ICFP, Philadelphia PA (1996)Google Scholar
  13. 13.
    Ernst, E.: Family Polymorphism. In: 15th ECOOP (June 2001)Google Scholar
  14. 14.
    Ernst, E., Ostermann, K., Cook, W.R.: A Virtual Class Calculus. In: POPL (2006)Google Scholar
  15. 15.
    Fisher, K., Reppy, J.: The design of a class mechanism for Moby. In: PLDI (June 1999)Google Scholar
  16. 16.
    Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: PLDI (1998)Google Scholar
  17. 17.
    Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and Mixins. In: 25th POPL (1998)Google Scholar
  18. 18.
    Harper, R., Lillibridge, M.: A Type-theoretic approach to higher-order modules with sharing. In: POPL (1994)Google Scholar
  19. 19.
    Harper, R., Stone, C.: A Type-theoretic interpretation of Standard ML. Carnegie Mellon Dept. of CS Technical Report CMU-CS-97-147 (1997)Google Scholar
  20. 20.
    Hirschowitz, T., Leroy, X.: Mixin Modules in a Call-by-Value Setting. In: Le Métayer, D. (ed.) ESOP 2002 and ETAPS 2002. LNCS, vol. 2305, pp. 6–20. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  21. 21.
    Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: 11th ECOOP (1997)Google Scholar
  22. 22.
    Lee, K., Chambers, C.: Parameterized modules for extensible classes and functions. Univ. of Washington Technical Report UW-CSE-2005-07-01, 2006 (forthcoming)Google Scholar
  23. 23.
    Leroy, X.: Manifest types, modules, and separate compilation. In: 21st POPL (1994)Google Scholar
  24. 24.
    Lopez-Herrejon, R.E., Batory, D., Cook, W.: Evaluating Support for Features in Advanced Modularization Technologies. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 169–194. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  25. 25.
    Madsen, O.L., Møller-Pedersen, B.: Virtual classes: a powerful mechanism in object-oriented programming. In: Conf. OOPSLA (1989)Google Scholar
  26. 26.
    McDirmid, S., Flatt, M., Hsieh, W.C.: Jiazzi: New age modules for old-fashioned Java. In: 16th OOPSLA, Tampa Bay FL, pp. 211–222 (2001)Google Scholar
  27. 27.
    Millstein, T., Chambers, C.: Modular Statically Typed Multimethods. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, Springer, Heidelberg (1999)CrossRefGoogle Scholar
  28. 28.
    Millstein, T., Bleckner, C., Chambers, C.: Modular Typechecking for Hierarchically Extensible Datatypes and Functions. ACM TOPLAS 26(5), 836–889 (2004)CrossRefGoogle Scholar
  29. 29.
    Millstein, T., Reay, M., Chambers, C.: Relaxed MultiJava: Balancing Extensibility and Modular Typechecking. In: OOPSLA (October 2003)Google Scholar
  30. 30.
    Milner, R., Tofte, M., Harper, R., MacQueen, D.: Def. of Standard ML (Revised). MIT Press, Cambridge (1997)Google Scholar
  31. 31.
    Nystrom, N., Chong, S.S., Myers, A.C.: Scalable Extensibility via Nested Inheritance. In: OOPSLA (2004)Google Scholar
  32. 32.
    Odersky, M., Altherr, P., Cremet, V., Emir, B., Maneth, S., Micheloud, S., Mihaylov, N., Schinz, M., Stenman, E., Zenger, M.: An Overview of the Scala Programming Language. EPFL Technical Report IC/2004/64. EPFL Lausanne (2004)Google Scholar
  33. 33.
    Rémy, D., Vouillon, J.: Objective ML: a simple object-oriented extension of ML. In: 24th POPL (1997)Google Scholar
  34. 34.
    Reppy, J., Riecke, J.: Simple objects for Standard ML. In: PLDI 1996 (1996)Google Scholar
  35. 35.
    Reynolds, J.C.: User defined types and procedural data structures as complementary approaches to data abstraction. In: Gries, D. (ed.) Programming Methodology, A Collection of Articles by IFIP WG2.3, Springer, Heidelberg (1978)Google Scholar
  36. 36.
    Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable Units of Behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, Springer, Heidelberg (2003)Google Scholar
  37. 37.
    Smaragdakis, Y., Batory, D.: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration Designs. ACM TSEM 11(2), 215–255 (2002)CrossRefGoogle Scholar
  38. 38.
    Smith, C., Drossopoulou, S.: Chai: Traits for Java-like Languages. In: ECOOP (2005)Google Scholar
  39. 39.
    Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (2000)Google Scholar
  40. 40.
    Thorup, K.K., Torgersen, M.: Unifying genericity – combining the benefits of virtual types and parameterized classes. In: 13th ECOOP (1999)Google Scholar
  41. 41.
    Wadler, P.: The Expression Problem. Java-genericity email list (November 1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Keunwoo Lee
    • 1
  • Craig Chambers
    • 1
  1. 1.Department of Computer Science and EngineeringUniversity of WashingtonSeattleUSA

Personalised recommendations