Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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
  • Get Citation Alerts
  • 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

    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)75
    • Downloads (Last 6 weeks)10
    Reflects downloads up to 10 Aug 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