Advertisement

First-Class Structures for Standard ML

  • Claudio V. Russo
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1782)

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.

Keywords

Type Component Module Language Static Semantic Type Inference Package Type 
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

  1. [1]
    R. Harper, M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In 21st ACM Symp. Principles of Prog. Lang., 1994.Google Scholar
  2. [2]
    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.CrossRefGoogle Scholar
  3. [3]
    J. R. Hindley. The principal type scheme of an object in combinatory logic. Trans. of the American Mathematical Society, 146:29–40, 1969.zbMATHCrossRefMathSciNetGoogle Scholar
  4. [4]
    M. Jones. Using Parameterized Signatures to Express Modular Structure. In 23rd ACM Symp. Principles of Prog. Lang., 1996.Google Scholar
  5. [5]
    D. Katiyar, D. Luckham, J. Mitchell. A type system for prototyping languages. In 24th ACM Symp. Principles of Prog. Lang., 1994.Google Scholar
  6. [6]
    X. Leroy. Manifest types, modules, and separate compilation. In Proc. 21st Symp. Principles of Prog. Lang., pages 109–122. ACM Press, 1994.Google Scholar
  7. [7]
    X. Leroy. Applicative functors and fully transparent higher-order modules. In Proc. 22nd Symp. Principles of Prog. Lang., pages 142–153. ACM Press, 1995.Google Scholar
  8. [8]
    M. Lillibridge. Translucent Sums: A Foundation for Higher-Order Module Systems. PhD thesis, School of Computer Science, Carnegie Mellon University, 1997.Google Scholar
  9. [9]
    R. Milner. A theory of type polymorphism in programming languages. Journal of Computer and System Sciences, 17:348–375, 1978.zbMATHCrossRefMathSciNetGoogle Scholar
  10. [10]
    R. Milner, M. Tofte, R. Harper, D. MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.Google Scholar
  11. [11]
    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.Google Scholar
  12. [12]
    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.CrossRefGoogle Scholar
  13. [13]
    M. Odersky, K. Läufer. Putting Type Annotations To Work In 23rd ACM Symp. Principles of Prog. Lang., 1996.Google Scholar
  14. [14]
    C. Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.Google Scholar
  15. [15]
    S. Romanenko, P. Sestoft. Moscow ML. (http://www.dina.kvl.dk/~sestoft/mosml).
  16. [16]
    C. V. Russo. Types For Modules. PhD Thesis, Laboratory for Foundations of Computer Science, University of Edinburgh, 1998.Google Scholar
  17. [17]
    C. V. Russo. Non-Dependent Types For Standard ML Modules. In 1999 Int’l Conf. on Principles and Practice of Declarative Programming.Google Scholar
  18. [18]
    C. V. Russo. First-Class Structures for Standard ML (long version). Forthcoming Technical Report, LFCS, Division of Informatics, University of Edinburgh, 2000.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Claudio V. Russo
    • 1
  1. 1.Cambridge University Computer LaboratoryCambridgeUK

Personalised recommendations