Abstract
The ML module system provides powerful parameterization facilities, but lacks the ability to split mutually recursive definitions across modules, and does not provide enough facilities for incremental programming. A promising approach to solve these issues is Ancona and Zucca’s mixin modules calculus CMS. However, the straightforward way to adapt it to ML fails, because it allows arbitrary recursive definitions to appear at any time, which ML does not support. In this paper, we enrich CMS with a refined type system that controls recursive definitions through the use of dependency graphs. We then develop a separate compilation scheme, directed by dependency graphs, that translate mixin modules down to a CBV λ-calculus extended with a non-standard let rec construct.
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
D. Ancona. Modular formal frameworks for module systems. PhD thesis, Universita di Pisa, 1998.
D. Ancona and E. Zucca. A primitive calculus for module systems. In G. Nadathur, editor, Princ. and Practice of Decl. Prog., volume 1702 of LNCS, pages 62–79. Springer-Verlag, 1999.
D. Ancona and E. Zucca. A calculus of module systems. Journal of functional programming, 2001. To appear.
Z. Ariola and S. Blom. Skew confluence and the lambda calculus with letrec. Annals of pure and applied logic, 2001. To appear.
V. Bono, M. Bugliesi, M. Dezani-Ciancaglini, and L. Liquori. Subtyping for extensible, incomplete objects. Fundamenta Informaticae, 38(4):325–364, 1999.
G. Boudol. The recursive record semantics of objects revisited. Research report 4199, INRIA, 2001. Preliminary version presented at ESOP’01, LNCS 2028.
G. Bracha. The programming language Jigsaw: mixins, modularity and multiple inheritance. PhD thesis, University of Utah, 1992.
G. Bracha and W. Cook. Mixin-based inheritance. In OOPSLA90, volume 25(10) of SIGPLAN Notices, pages 303–311. ACM Press, 1990.
L. Cardelli. Program fragments, linking, and modularization. In 24th symp. Principles of Progr. Lang, pages 266–277. ACM Press, 1997.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173–202, 1987.
K. Crary, R. Harper, and S. Puri. What is a recursive module? In Prog. Lang. Design and Impl. 1999, pages 50–63. ACM Press, 1999.
D. Dreyer, K. Crary, and R. Harper. Toward a practical type theory for recursive modules. Technical Report CMU-CS-01-112, Carnegie Mellon University, 2001.
D. Duggan and C. Sourelis. Mixin modules. In Int. Conf. on Functional Progr. 96, pages 262–273. ACM Press, 1996.
D. Duggan and C. Sourelis. Recursive modules and mixin-based inheritance. Unpublished draft, 2001.
M. Flatt and M. Felleisen. Units: cool modules for HOT languages. In Prog. Lang. Design and Impl. 1998, pages 236–248. ACM Press, 1998.
R. Harper and M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In 21st symp. Principles of Progr. Lang, pages 123–137. ACM Press, 1994.
T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting (long version). Available at http://pauillac.inria.fr/~hirschow, 2001.
X. Leroy. Manifest types, modules, and separate compilation. In 21st symp. Principles of Progr. Lang, pages 109–122. ACM Press, 1994.
M. Lillibridge. Translucent sums: a foundation for higher-order module systems. PhD thesis, School of Computer Science, Carnegie Mellon University, 1997.
C. Russo. Recursive structures for Standard ML. In Int. Conf. on Functional Progr. 01, pages 50–61, 2001.
J. Wells and R. Vestergaard. Equational reasoning for linking with first-class primitive modules. In Programming Languages and Systems, 9th European Symp. Programming, volume 1782 of LNCS, pages 412–428. Springer-Verlag, 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hirschowitz, T., Leroy, X. (2002). Mixin Modules in a Call-by-Value Setting. In: Le Métayer, D. (eds) Programming Languages and Systems. ESOP 2002. Lecture Notes in Computer Science, vol 2305. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45927-8_2
Download citation
DOI: https://doi.org/10.1007/3-540-45927-8_2
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43363-7
Online ISBN: 978-3-540-45927-9
eBook Packages: Springer Book Archive