|
ABSTRACT
The design of a module system for constructing and maintaining large programs is a difficult task that raises a number of theoretical and practical issues. A fundamental issue is the management of the flow of information between program units at compile time via the notion of an interface. Experience has shown that fully opaque interfaces are awkward to use in practice since too much information is hidden, and that fully transparent interfaces lead to excessive interdependencies, creating problems for maintenance and separate compilation. The “sharing” specifications of Standard ML address this issue by allowing the programmer to specify equational relationships between types in separated modules, but are not expressive enough to allow the programmer complete control over the propagation of type information between modules.
These problems are addressed from a type-theoretic viewpoint by considering a calculus based on Girard's system F&ohgr;. The calculus differs form those considered in previous studies by relying exclusively on a new form of weak sum type to propagate information at compile-time, in contrast to approaches based on strong sums which rely on substitution. The new form of sum type allows for the specification of equational, as well as type and kind, information in interfaces. This provides complete control over the propagation of compile-time information between program units and is sufficient to encode in a straightforward way most users of type sharing specifications in Standard ML.
Modules are treated as “first-class” citizens, and therefore the system supports higher-order modules and some object-oriented programming idioms; the language may be easily restricted to “second-class” modules found in ML-like languages.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
Andrew W. Appel and David B. MacQueen. Standard ML of New Jersey. In J. Maluszynski and M. Wirsing, editors, Third lnt'l Syrup. on Prog. Lang. implementation and Logic Programming, pages 1-13, New York, August 1991. Springer-Verlag.
|
| |
3
|
|
| |
4
|
|
| |
5
|
|
| |
6
|
|
| |
7
|
Luca Cardelli. Typeful programming. Technical Report 45, DEC SRC, 1989.
|
| |
8
|
Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 report (revised). Technical Report 52, DEC Systems Research Center, Palo Alto, CA, November 1989.
|
 |
9
|
|
| |
10
|
Luca Cardelli and Leroy Xavier. Abstract types and the dot notation. Technical Report 56, DEC SRC, Palo Alto, CA, March 1990.
|
| |
11
|
Eric Cooper, Robert Harper, and Peter Lee. The Fox project: Advanced development of systems software. Technical Report CMU-CS-91-178, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, August 1991.
|
| |
12
|
Nicolas G. de Bruijn. A survey of the project AU- TOMATH. In J. P. Seldin and J. R. Hindley, editors, To H. B. Curry: Essays in Combinatory Logic, Lambda Calculus and Formalism, pages 589-606. Academic Press, 1980.
|
| |
13
|
Emden Gansner and John Reppy. eXene. In Robert Harper, editor, Third international Workshop on Standard ML, Pittsburgh, PA, September 1991. School of Computer Science, Carnegie Mellon University.
|
| |
14
|
Jean-Yves Girard. interprgtation Fonctionnelle et Elimination des Coupures dans l'Arithmgtique d'Ordre Supdrieure. PhD thesis, Universitfi Paris VII, 1972.
|
| |
15
|
Robert Harper. Introduction to Standard ML. Technical Report ECS-LFCS-86-14, Laboratory for the Foundations of Computer Science, Edinburgh University, September 1986.
|
 |
16
|
|
| |
17
|
Robert Harper, David MacQueen, and Robin Milner. Standard ML. Technical Report ECS-LFCS-86-2, Laboratory for the Foundations of Computer Science, Edinburgh University, March 1986.
|
| |
18
|
Robert Harper, David MacQueen, and Robin Milner. Standard ML. Technical Report ECS-LFCS-86-2, Laboratory for the Foundations of Computer Science, Edinburgh University, March 1986.
|
 |
19
|
|
 |
20
|
|
| |
21
|
|
| |
22
|
|
 |
23
|
Xavier Leroy, Manifest types, modules, and separate compilation, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.109-122, January 16-19, 1994, Portland, Oregon, United States
[doi> 10.1145/174675.176926]
|
| |
24
|
|
| |
25
|
Zhaolui Luo, Robert Pollack, and Paul Taylor. How to use Lego: A preliminary user's manual. Technical Report LFCS-TN-27, Laboratory for the Foundations of Computer Science, Edinburgh University, October 1989.
|
 |
26
|
|
 |
27
|
|
 |
28
|
|
| |
29
|
Per Martin-LSf. Constructive mathematics and computer programming, in Sixth International Congress for Logic, Methodology, and Philosophy of Science, pages 153-175. North-Holland, 1982.
|
| |
30
|
David C. J. Matthews. POLY report. Technical Report 28, Computer Laboratory, University of Cambridge, 1982.
|
| |
31
|
|
| |
32
|
|
 |
33
|
|
 |
34
|
John Mitchell , Sigurd Meldal , Neel Madhav, An extension of standard ML modules with subtyping and inheritance, Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.270-278, January 21-23, 1991, Orlando, Florida, United States
[doi> 10.1145/99583.99620]
|
 |
35
|
|
| |
36
|
|
 |
37
|
|
| |
38
|
|
| |
39
|
|
| |
40
|
Nick Rothwell. Functional compilation from the Standard ML core language to lambda calculus. Technical Report ECS-LFCS-92-235, Laboratory for the Foundations of Computer Science, Edinburgh University, Edinburgh, Scotland, September 1992.
|
| |
41
|
Nick Rothwell. Miscellaneous design issues in the ML kit. Technical Report ECS-LFCS-92-237, Laborator) for the Foundations of Computer Science, Edinburg~ University, Edinburgh, Scotland, September 1992.
|
 |
42
|
|
 |
43
|
|
| |
44
|
Mads ToRe. Type abbreviations in signatures. Unpublished manuscript, August 1993.
|
| |
45
|
Diedrik T. van Daalen. The Language Theory of A U- TOMATH. PhD thesis, Technical University of Eindhoven, Eindhoven, Netherlands, 1980.
|
| |
46
|
|
CITED BY 77
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. Tarditi , G. Morrisett , P. Cheng , C. Stone , R. Harper , P. Lee, TIL: a type-directed optimizing compiler for ML, ACM SIGPLAN Notices, v.31 n.5, p.181-192, May 1996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Peter Sewell , James J. Leifer , Keith Wansbrough , Francesco Zappa Nardelli , Mair Allen-Williams , Pierre Habouzit , Viktor Vafeiadis, Acute: high-level programming language design for distributed computation, ACM SIGPLAN Notices, v.40 n.9, September 2005
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Xavier Leroy, Manifest types, modules, and separate compilation, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.109-122, January 16-19, 1994, Portland, Oregon, United States
|
|
|
|
|
|
Dinesh Katiyar , David Luckham , John Mitchell, A type system for prototyping languages, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.138-150, January 16-19, 1994, Portland, Oregon, United States
|
|
|
Yasuhiko Minamide , Greg Morrisett , Robert Harper, Typed closure conversion, Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.271-283, January 21-24, 1996, St. Petersburg Beach, Florida, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
David Tarditi , Greg Morrisett , Perry Cheng , Chris Stone , Robert Harper , Peter Lee, TIL: a type-directed, optimizing compiler for ML, ACM SIGPLAN Notices, v.39 n.4, April 2004
|
|
|
Dimitrios Vytiniotis , Geoffrey Washburn , Stephanie Weirich, An open and shut typecase, Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation, p.13-24, January 10-10, 2005, Long Beach, California, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PETER SEWELL , JAMES J. LEIFER , KEITH WANSBROUGH , FRANCESCO ZAPPA NARDELLI , MAIR ALLEN-WILLIAMS , PIERRE HABOUZIT , VIKTOR VAFEIADIS, Acute: High-level programming language design for distributed computation, Journal of Functional Programming, v.17 n.4-5, p.547-612, July 2007
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
David Swasey , Tom Murphy, VII , Karl Crary , Robert Harper, A separate compilation extension to standard ML, Proceedings of the 2006 workshop on ML, September 16-16, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
John Billings , Peter Sewell , Mark Shinwell , Rok Strniša, Type-safe distributed programming for OCaml, Proceedings of the 2006 workshop on ML, September 16-16, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|