Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ancona, D., Zucca, E.: True Modules for Java-like Languages. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, Springer, Heidelberg (2001)
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)
Bonniot, D.: Type-checking multi-methods in ML (A modular approach). In: FOOL 9 (2002)
Bourdoncle, F., Merz, S.: Type checking higher-order polymorphic multi-methods. In: 24th POPL (1997)
Bracha, G., Cook, W.: Mixin-based Inheritance. In: OOPSLA (1990)
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)
Bruce, K.B., Odersky, M., Wadler, P.: A Statically safe alternative to virtual types. In: 12th ECOOP (1998)
Chambers, C.: Object-Oriented Multi-Methods in Cecil. In: 6th ECOOP (1992)
Chambers, C.: Cecil Group. The Cecil Language: Specification and Rationale. Univ. of Washington Technical Report UW-CSE-93-03-05, 1993-2004
Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java. In: OOPSLA (2000)
Dreyer, D., Crary, K., Harper, R.: A Type System for Higher-Order Modules. In: 30th POPL (2003)
Duggan, D., Sourelis, C.: Mixin modules. In: First ICFP, Philadelphia PA (1996)
Ernst, E.: Family Polymorphism. In: 15th ECOOP (June 2001)
Ernst, E., Ostermann, K., Cook, W.R.: A Virtual Class Calculus. In: POPL (2006)
Fisher, K., Reppy, J.: The design of a class mechanism for Moby. In: PLDI (June 1999)
Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: PLDI (1998)
Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and Mixins. In: 25th POPL (1998)
Harper, R., Lillibridge, M.: A Type-theoretic approach to higher-order modules with sharing. In: POPL (1994)
Harper, R., Stone, C.: A Type-theoretic interpretation of Standard ML. Carnegie Mellon Dept. of CS Technical Report CMU-CS-97-147 (1997)
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)
Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: 11th ECOOP (1997)
Lee, K., Chambers, C.: Parameterized modules for extensible classes and functions. Univ. of Washington Technical Report UW-CSE-2005-07-01, 2006 (forthcoming)
Leroy, X.: Manifest types, modules, and separate compilation. In: 21st POPL (1994)
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)
Madsen, O.L., Møller-Pedersen, B.: Virtual classes: a powerful mechanism in object-oriented programming. In: Conf. OOPSLA (1989)
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)
Millstein, T., Chambers, C.: Modular Statically Typed Multimethods. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, Springer, Heidelberg (1999)
Millstein, T., Bleckner, C., Chambers, C.: Modular Typechecking for Hierarchically Extensible Datatypes and Functions. ACM TOPLAS 26(5), 836–889 (2004)
Millstein, T., Reay, M., Chambers, C.: Relaxed MultiJava: Balancing Extensibility and Modular Typechecking. In: OOPSLA (October 2003)
Milner, R., Tofte, M., Harper, R., MacQueen, D.: Def. of Standard ML (Revised). MIT Press, Cambridge (1997)
Nystrom, N., Chong, S.S., Myers, A.C.: Scalable Extensibility via Nested Inheritance. In: OOPSLA (2004)
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)
Rémy, D., Vouillon, J.: Objective ML: a simple object-oriented extension of ML. In: 24th POPL (1997)
Reppy, J., Riecke, J.: Simple objects for Standard ML. In: PLDI 1996 (1996)
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)
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)
Smaragdakis, Y., Batory, D.: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration Designs. ACM TSEM 11(2), 215–255 (2002)
Smith, C., Drossopoulou, S.: Chai: Traits for Java-like Languages. In: ECOOP (2005)
Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (2000)
Thorup, K.K., Torgersen, M.: Unifying genericity – combining the benefits of virtual types and parameterized classes. In: 13th ECOOP (1999)
Wadler, P.: The Expression Problem. Java-genericity email list (November 1998)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lee, K., Chambers, C. (2006). Parameterized Modules for Classes and Extensible Functions. In: Thomas, D. (eds) ECOOP 2006 – Object-Oriented Programming. ECOOP 2006. Lecture Notes in Computer Science, vol 4067. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11785477_21
Download citation
DOI: https://doi.org/10.1007/11785477_21
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-35726-1
Online ISBN: 978-3-540-35727-8
eBook Packages: Computer ScienceComputer Science (R0)