Abstract
Standard ML is a statically typed programming language that is suited for the construction of both small and large programs. “Programming in the small” is captured by Standard ML’s Core language. “Programming in the large” is captured by Standard ML’s Modules language that provides constructs for organising related Core language definitions into self-contained modules with descriptive interfaces. While the Core is used to express details of algorithms and data structures, Modules is used to express the overall architecture of a software system. The Modules and Core languages are stratified in the sense that modules may not be manipulated as ordinary values of the Core. This is a limitation, since it means that the architecture of a program cannot be reconfigured according to run-time demands. We propose a novel extension of the language that allows modules to be manipulated as first-class values of the Core language. The extension greatly extends the expressive power of the language and has been shown to be compatible with both Core type inference and a separate extension to higher-order modules.
This research was completed at the LFCS, Division of Informatics, University of Edinburgh under EPSRC grant GR/K63795. Thanks to Don Sannella, Healfdene Goguen and the anonymous referees.
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
R. Harper, M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In 21st ACM Symp. Principles of Prog. Lang., 1994.
R. Harper, J. C. Mitchell. On the type structure of Standard ML. In ACM Trans. Prog. Lang. Syst., volume 15(2), pages 211–252, 1993.
J. R. Hindley. The principal type scheme of an object in combinatory logic. Trans. of the American Mathematical Society, 146:29–40, 1969.
M. Jones. Using Parameterized Signatures to Express Modular Structure. In 23rd ACM Symp. Principles of Prog. Lang., 1996.
D. Katiyar, D. Luckham, J. Mitchell. A type system for prototyping languages. In 24th ACM Symp. Principles of Prog. Lang., 1994.
X. Leroy. Manifest types, modules, and separate compilation. In Proc. 21st Symp. Principles of Prog. Lang., pages 109–122. ACM Press, 1994.
X. Leroy. Applicative functors and fully transparent higher-order modules. In Proc. 22nd Symp. Principles of Prog. Lang., pages 142–153. ACM Press, 1995.
M. Lillibridge. Translucent Sums: A Foundation for Higher-Order Module Systems. PhD thesis, School of Computer Science, Carnegie Mellon University, 1997.
R. Milner. A theory of type polymorphism in programming languages. Journal of Computer and System Sciences, 17:348–375, 1978.
R. Milner, M. Tofte, R. Harper, D. MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
J. C. Mitchell, S. Meldal, N. Madhav. An extension of Standard ML modules with subtyping and inheritance. In 18th ACM Symp. Principles of Prog. Lang., 1991.
J. C. Mitchell and G. D. Plotkin. Abstract types have existential type. ACM Transactions on Programming Languages and Systems, 10(3):470–502, July 1988.
M. Odersky, K. Läufer. Putting Type Annotations To Work In 23rd ACM Symp. Principles of Prog. Lang., 1996.
C. Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.
S. Romanenko, P. Sestoft. Moscow ML. (http://www.dina.kvl.dk/~sestoft/mosml).
C. V. Russo. Types For Modules. PhD Thesis, Laboratory for Foundations of Computer Science, University of Edinburgh, 1998.
C. V. Russo. Non-Dependent Types For Standard ML Modules. In 1999 Int’l Conf. on Principles and Practice of Declarative Programming.
C. V. Russo. First-Class Structures for Standard ML (long version). Forthcoming Technical Report, LFCS, Division of Informatics, University of Edinburgh, 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Russo, C.V. (2000). First-Class Structures for Standard ML. In: Smolka, G. (eds) Programming Languages and Systems. ESOP 2000. Lecture Notes in Computer Science, vol 1782. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-46425-5_22
Download citation
DOI: https://doi.org/10.1007/3-540-46425-5_22
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67262-3
Online ISBN: 978-3-540-46425-9
eBook Packages: Springer Book Archive