Abstract
Mixin modules are a notion of modules that allows cross-module recursion and late binding, two features missing in ML-style modules. They have been well defined in a call-by-name setting, but in a call-by-value setting, they tend to conflict with the usual static restrictions on recursive definitions. Moreover, the semantics of instantiation has to specify an order of evaluation, which involves a difficult design choice. Previous proposals [14, 16] rely on the dependencies between components to compute a valid order of evaluation. In such systems, mixin module types must carry some information on the dependencies between their components, which makes them verbose. In this paper, we propose a new, simpler design for mixin modules in a call-by-value setting, which avoids this problem.
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., Fagorzi, S., Moggi, E., Zucca, E.: Mixin modules and computational effects. Int’l Col. on Automata, Lang. and Progr. (2003)
Ancona, D., Zucca, E.: A calculus of module systems. J. Func. Progr. 12(2) (2002)
Appel, A.W.: Compiling with continuations. Cambridge University Press, Cambridge (1992)
Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah (1992)
Cardelli, L.: Program fragments, linking, and modularization. In: 24th symp. Principles of Progr. Lang., ACM Press, New York (1997)
Crary, K., Harper, R., Puri, S.: What is a recursive module? In: Prog. Lang. Design and Impl., ACM Press, New York (1999)
Dreyer, D.R., Harper, R., Crary, K.: Toward a practical type theory for recursive modules. Technical Report CMU-CS-01-112, Carnegie Mellon University, Pittsburgh, PA (2001)
Duggan, D., Sourelis, C.: Mixin modules. In: Int. Conf. on Functional Progr., ACM Press, New York (1996)
Flatt, M.: PLT MzScheme: language manual. Technical Report TR97-280, Rice University (1997)
Flatt, M., Felleisen, M.: Units: cool modules for HOT languages. In: Prog. Lang. Design and Impl., ACM Press, New York (1998)
Harper, R., Lillibridge, M.: A type-theoretic approach to higher-order modules with sharing. In: 21st symp. Principles of Progr. Lang., ACM Press, New York (1994)
Hirschowitz, T.: Modules mixins, modules et récursion étendue en appel par valeur. PhD thesis, University of Paris VII (2003)
Hirschowitz, T.: Rigid mixin modules. Research report RR2003-46, ENS Lyon (2003)
Hirschowitz, T., Leroy, X.: Mixin modules in a call-by-value setting. In: Le Métayer, D. (ed.) ESOP 2002. LNCS, vol. 2305, pp. 6–20. Springer, Heidelberg (2002)
Hirschowitz, T., Leroy, X., Wells, J.B.: Compilation of extended recursion in callby- value functional languages. In: Princ. and Practice of Decl. Prog., ACM Press, New York (2003)
Hirschowitz, T., Leroy, X., Wells, J.B.: A reduction semantics for call-by-value mixin modules. Research report RR-4682, Inria (2003)
Leroy, X., Doligez, D., Garrigue, J., Vouillon, J.: The Objective Caml system (1996-2003), Software and documentation available on the Web http://caml.inria.fr/
Machkasova, E., Turbak, F.A.: A calculus for link-time compilation. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, p. 260. Springer, Heidelberg (2000)
Milner, R., Tofte, M., MacQueen, D.: The Definition of Standard ML. MIT Press, Cambridge (1990)
Wells, J.B., Vestergaard, R.: Equational reasoning for linking with first-class primitive modules. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, p. 412. Springer, Heidelberg (2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hirschowitz, T. (2004). Rigid Mixin Modules. In: Kameyama, Y., Stuckey, P.J. (eds) Functional and Logic Programming. FLOPS 2004. Lecture Notes in Computer Science, vol 2998. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24754-8_16
Download citation
DOI: https://doi.org/10.1007/978-3-540-24754-8_16
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21402-1
Online ISBN: 978-3-540-24754-8
eBook Packages: Springer Book Archive