Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/174675.176926acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

Manifest types, modules, and separate compilation

Published: 01 February 1994 Publication History

Abstract

This paper presents a variant of the SML module system that introduces a strict distinction between abstract types and manifest types (types whose definitions are part of the module specification), while retaining most of the expressive power of the SML module system. The resulting module system provides much better support for separate compilation.

References

[1]
M.-V. Aponte. Extending record typing to type parametric modules with sharing. In 20th symposium Principles of Programming Languages, pages 465-478. ACM Press, 1993.
[2]
L. Birkedal, N. Rothwell, M. Tofte, and D. N. Turner. The ML kit, version 1. Technical report 93/14, DIKU, 1993.
[3]
L. Cardelli. Structural subtyping and the notion of power type. In 15th symposium Pmnciples of Programming Languages, pages 70-79. ACM Press, 1988.
[4]
L. Cardelli. Typeful programming. In E. J. Neuhold and M. Paul, editors, Formal Description of Programming Concepts, pages 431-507. Springer-Verlag, 1989.
[5]
L. Cardelli and X. Leroy. Abstract types and the dot notation. In Proc. IFIP TC2 working conference on programming concepts and methods. North-Holland, 1990.
[6]
L. Cardelli and J. C. Mitchell. Operations on records. In Mathematical Foundations of Programming Semantics, volume 442 of Lecture Notes in Computer Science, pages 22-52, 1989.
[7]
L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing surveys, 17(4):471-522, 1985.
[8]
P. Crgut. Separate compilation in SML. Working note, Magic group, ECRC, 1993.
[9]
L. Damas and R. Milner. Principal type-schemes for functional programs, in 9th symposium Principles of Programming Languages, pages 207-212. ACM Press, 1982.
[10]
R. Harper and M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In 21~t symposium Pmnczples of Programming Languages. ACM Press, 1994.
[11]
R. Harper, R. Milner, and M. Tofte. A type discipline for program modules. In TAPSOFT 87, volume 250 of Lecture Notes in Computer Sczence, pages 308-319. Springer-Verlag, 1987.
[12]
R. Harper and J. C. Mitchell. On the type structure of Standard ML. A CM Trans. Prog. Lang. Syst., 15(2):211-252, 1993.
[13]
R. Harper, J. C. Mitchell, and E. Moggi. Higher-order modules and the phase distinction, in 17th symposium Principles of Programming Languages~ pages 341-354. ACM Press, 1990.
[14]
D. MacQueen. Modules for Standard ML. In R. Harper, D. MacQueen, and R. Milner, editors, Standard ML. University of Edinburgh, technical report ECS LFCS 86-2, 1986.
[15]
D. MacQueen. Using dependent types to express modular structure. In 13th symposium Pmnciples of Programming Languages, pages 277-286. ACM Press, 1986.
[16]
R. Milner and M. Tofte. Commentary on Standard ML. The MIT Press, 1991.
[17]
R. Milner, M. Torte, and R. Harper. The definitwn of Standard ML. The MIT Press, 1990.
[18]
J. C. Mitchell. On the equivalence of data representations. In V. Lifschitz, editor, Artificial intelligence and mathematical theory of computahon, pages 305- 330. Academic Press, 1991.
[19]
J. C. Mitchell and G. D. Plotkin. Abstract types have existential type. A CM Trans. Prog. Lang. Syst., 10(3):470-502, 1988.
[20]
B. C. Pierce. Bounded quantification is undecidable. In 19th symposium Principles of Programming Languages, pages 305-315. ACM Press, 1992.
[21]
D. Rdmy. Extending ML type system with a sorted equational theory. Research report 1766, INRIA, 1992.
[22]
J. C. Reynolds. The essence of Algol. In de Bakker and van Vliet, editors, Algomthm~c languages, pages 345- 372. North-Holland, 1981.
[23]
A. Sabry and M. Felleisen. Reasoning about programs in continuation-passing style. In Lisp and Functional Programming 1992, pages 288-298, 1992.
[24]
Z. Shao and A. Appel. Smartest recompilation. In 20th symposium Principles of Programming Languages, pages 439-450. ACM Press, 1993.
[25]
M. Tofte. Principal signatures for higher-order program modules. In 19th symposium PmncipIes of Programming Languages, pages 189-199. ACM Press, 1992.
[26]
M. Tofte. Type abbreviations in signatures. Message sent to the sml mailing list, Jan. 1992.
[27]
N. Wirth. Programming in Modula-2. Springer-Verlag, 1983.

Cited By

View all
  • (2024)Staged Compilation with Module FunctorsProceedings of the ACM on Programming Languages10.1145/36746498:ICFP(693-727)Online publication date: 15-Aug-2024
  • (2024)Fulfilling OCaml Modules with TransparencyProceedings of the ACM on Programming Languages10.1145/36498188:OOPSLA1(194-222)Online publication date: 29-Apr-2024
  • (2024)An ML-Style Module System for Cross-Stage Type Abstraction in Multi-stage ProgrammingFunctional and Logic Programming10.1007/978-981-97-2300-3_13(237-272)Online publication date: 2024
  • Show More Cited By

Recommendations

Reviews

Frank Lawrence Friedman

In many languages such as Modula-2 and C++, type specifications are treated as opaque, that is, all exported types are abstract. This feature facilitates separate compilation but is claimed to greatly reduce the expressive power of the language. On the other hand, languages such as SML, which treat type specification as transparent, are claimed to enable the construction of modules that more accurately express program structure, but clearly force compile-time checking of type consistency between the definition and use of a component to be done in a bottom-up order. This paper addresses this problem by presenting a modification to SML in which type specifications are treated as opaque but signatures can be enhanced through the use of manifest type specifications. The combination of these features is shown to adequately support separate compilation while retaining the expressivity provided by SML. It is also shown to subsume a large part of the SML sharing constraint capability. Leroy's paper is far from self-contained, and the abstract does not adequately reflect the paper's main focus. A full understanding of the issues addressed and the claimed improvements made requires a familiarity with SML and its goals as well as an understanding of some basic definitions and ideas expressed in other papers referenced in the bibliography. This style is highly appropriate for the publication containing the paper, but it makes the paper less readily available to a wider audience.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '94: Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
February 1994
492 pages
ISBN:0897916360
DOI:10.1145/174675
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 February 1994

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

POPL94

Acceptance Rates

POPL '94 Paper Acceptance Rate 39 of 173 submissions, 23%;
Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)87
  • Downloads (Last 6 weeks)8
Reflects downloads up to 24 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Staged Compilation with Module FunctorsProceedings of the ACM on Programming Languages10.1145/36746498:ICFP(693-727)Online publication date: 15-Aug-2024
  • (2024)Fulfilling OCaml Modules with TransparencyProceedings of the ACM on Programming Languages10.1145/36498188:OOPSLA1(194-222)Online publication date: 29-Apr-2024
  • (2024)An ML-Style Module System for Cross-Stage Type Abstraction in Multi-stage ProgrammingFunctional and Logic Programming10.1007/978-981-97-2300-3_13(237-272)Online publication date: 2024
  • (2023)MacoCaml: Staging Composable and Compilable MacrosProceedings of the ACM on Programming Languages10.1145/36078517:ICFP(604-648)Online publication date: 31-Aug-2023
  • (2022)Incremental type-checking for free: using scope graphs to derive incremental type-checkersProceedings of the ACM on Programming Languages10.1145/35633036:OOPSLA2(424-448)Online publication date: 31-Oct-2022
  • (2021)Logical Relations as Types: Proof-Relevant Parametricity for Program ModulesJournal of the ACM10.1145/347483468:6(1-47)Online publication date: 5-Oct-2021
  • (2020)The history of Standard MLProceedings of the ACM on Programming Languages10.1145/33863364:HOPL(1-100)Online publication date: 12-Jun-2020
  • (2020)A focused solution to the avoidance problemJournal of Functional Programming10.1017/S095679682000022230Online publication date: 6-Aug-2020
  • (2019)A path to DOT: formalizing fully path-dependent typesProceedings of the ACM on Programming Languages10.1145/33605713:OOPSLA(1-29)Online publication date: 10-Oct-2019
  • (2019)Characterising renaming within OCaml’s module system: theory and implementationProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314600(950-965)Online publication date: 8-Jun-2019
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media