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

skip to main content
10.1145/301618.301641acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free access

What is a recursive module?

Published: 01 May 1999 Publication History

Abstract

A hierarchical module system is an effective tool for structuring large programs. Strictly hierarchical module systems impose an acyclic ordering on import dependencies among program units. This can impede modular programming by forcing mutually-dependent components to be consolidated into a single module. Recently there have been several proposals for module systems that admit cyclic dependencies, but it is not clear how these proposals relate to one another, nor how one might integrate them into an expressive module system such as that of ML.To address this question we provide a type-theoretic analysis of the notion of a recursive module in the context of a "phase-distinction" formalism for higher-order module systems. We extend this calculus with a recursive module mechanism and a new form of signature, called a recursively dependent signature, to support the definition of recursive modules. These extensions are justified by an interpretation in terms of more primitive language constructs. This interpretation may also serve as a guide for implementation.

References

[1]
Roberto Amadio and Luca Cardelli. Subtyping recursive types. ACM TOPLAS, 15(4):575-631, 1993.
[2]
Deride Ancona and Elena Zucca. An algebra of mixin modules. In F. Parisi-Presicce, editor, WADT '97 l~th Workshop on Algebraic Development Techniques - Selected Papers, volume 1376 of Lecture Notes in Computer Science, pages 92-106, Berlin, 1997. Springer Verlag.
[3]
Matthias Blume. Hierarchical Modularity and intermodule Optimization. PhD thesis, Princeton University, Department of Computer Science, Princeton, New Jersey, November 1997.
[4]
Luca Cardelli. Phase distinctions in type theory. Unpublished manuscript.
[5]
Karl Crary, Robert Harper, Perry Cheng, Leaf Petersen, and Chris Stone. Transparent and opaque interpretations of datatypes. Technical Report CMU-CS-98-177, Carnegie Mellon University, School of Computer Science, November 1998.
[6]
Dominic Duggan and Constantinos Sourelis. Mixin modules. In 1996 A CM SIGPLAN International Conerence on Functional Programming, pages 262-273, Philadelphia, Pennsylvania, June 1996.
[7]
Dominic Duggan and Constantinos Sourelis. Parameterized modules, recursive modules, and mixin modules, in 1998 A CM SIGPLAN Workshop on ML, pages 87-96, Baltimore, Maryland, September 1998.
[8]
Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In 1998 A CM SIGPLAN Conference on Programming Language Design and Implementation, pages 236-248, Montreal, Canada, June 1998.
[9]
Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Twenty-First ACM Symposium on Principles of Programming Languages, pages 123-137, Portland, Oregon, January 1994.
[10]
Robert Harper and John C. Mitchell. On the type structure of Standard ML. A CM Transactions on Programming Languages and Systems, 15(2):211-252, April 1993.
[11]
Robert Harper, John C. Mitchell, and Eugenio Moggi. Higher-order modules and the phase distinction. In Seventeenth A CM Symposium on Principles of Programming Languages, San Francisco, California, January 1990.
[12]
Robert Harper and Chris Stone. A type-theoretic interpretation of Standard ML. In Proof, Language and Interaction: Essays in Honour of Robin Milner. The MIT Press, 1998. To appear.
[13]
Xavier Leroy. Manifest types, modules, and separate compilation. In Proceedings o! the Twenty-first Annual A CM Symposium on Principles of Programming Languages, pages 109-122, Portland, Oregon, January 1994.
[14]
Xavier Leroy. The Objective Carol system: Documentation and user's guide. Available at http://pauillac, inria, fr/ocaml/htmlman/., 1996.
[15]
David MacQueen. Modules for Standard ML. In 198.4 A CM Conference on Lisp and Functional Programming, pages 198-207, Austin, Texas, August 1984.
[16]
Robin Milner, Mads Torte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
[17]
G~raud S~nizergues. The equivalence problem for deterministic pushdown automata is decidable. In Twenty- Fourth International Colloquium on Automata, Languages, and Programming, volume 1256 of Lecture Notes in Computer Science, pages 671-681, Bologna, Italy, July 1997. Springer-Verlag.
[18]
Zhong Shao. An overview of the FLINT/ML compiler. In Proceedings of the 1997 A CM SIGPLAN Workshop on Types in Compilation, Kyoto, Japan, June 1997.
[19]
Zhong Shao. Equality of recursive types. (Private communication), September 1998.
[20]
Zhong Shao. Typed cross-module compilation. In 1998 A CM SIGPLAN International Conference on Functional Pi'ogramming, pages 141-152, Baltimore, Maryland, September 1998.
[21]
Emin Giin Sirer, Marc E. Fiucynski, Przemyslaw Pardyak, and Brian N. Bershad. Safe dynamic linking in an extensible operating system. In Workshop on Compiler Support for System Software, Tucson, Arizona, February 1996.
[22]
Marvin Solomon. Type definitions with parameters (extended abstract). In Fifth A CM Symposium on Principles of Programming Languages, pages 31-38, Tucson, Arizona, January 1978.
[23]
David Tarditi, Greg Morrisett, Perry Cheng, Chris Stone, Robert Harper, and Peter Lee. TIL: A typedirected optimizing compiler for ML. In A CM SIG- PLAN Conference on Programming Language Design and Implementation, pages 181-192, Philadelphia, Pennsylvania, May 1996.

Cited By

View all
  • (2024)Full Iso-Recursive TypesProceedings of the ACM on Programming Languages10.1145/36897188:OOPSLA2(192-221)Online publication date: 8-Oct-2024
  • (2024)Same Same but Different: A Comparative Analysis of Static Type Checkers in ErlangProceedings of the 23rd ACM SIGPLAN International Workshop on Erlang10.1145/3677995.3678189(2-12)Online publication date: 28-Aug-2024
  • (2024)Staged Compilation with Module FunctorsProceedings of the ACM on Programming Languages10.1145/36746498:ICFP(693-727)Online publication date: 15-Aug-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '99: Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
May 1999
304 pages
ISBN:1581130945
DOI:10.1145/301618
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 May 1999

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PLDI99

Acceptance Rates

PLDI '99 Paper Acceptance Rate 26 of 130 submissions, 20%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)161
  • Downloads (Last 6 weeks)33
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Full Iso-Recursive TypesProceedings of the ACM on Programming Languages10.1145/36897188:OOPSLA2(192-221)Online publication date: 8-Oct-2024
  • (2024)Same Same but Different: A Comparative Analysis of Static Type Checkers in ErlangProceedings of the 23rd ACM SIGPLAN International Workshop on Erlang10.1145/3677995.3678189(2-12)Online publication date: 28-Aug-2024
  • (2024)Staged Compilation with Module FunctorsProceedings of the ACM on Programming Languages10.1145/36746498:ICFP(693-727)Online publication date: 15-Aug-2024
  • (2022)Set-theoretic Types for ErlangProceedings of the 34th Symposium on Implementation and Application of Functional Languages10.1145/3587216.3587220(1-14)Online publication date: 31-Aug-2022
  • (2022)Revisiting Iso-Recursive SubtypingACM Transactions on Programming Languages and Systems10.1145/354953744:4(1-54)Online publication date: 21-Sep-2022
  • (2022)Multiparty GV: functional multiparty session types with certified deadlock freedomProceedings of the ACM on Programming Languages10.1145/35476386:ICFP(466-495)Online publication date: 31-Aug-2022
  • (2021)Resource-Aware Session Types for Digital Contracts2021 IEEE 34th Computer Security Foundations Symposium (CSF)10.1109/CSF51468.2021.00004(1-16)Online publication date: Jun-2021
  • (2020)Revisiting iso-recursive subtypingProceedings of the ACM on Programming Languages10.1145/34282914:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • (2020)Scala step-by-step: soundness for DOT with step-indexed logical relations in IrisProceedings of the ACM on Programming Languages10.1145/34089964:ICFP(1-29)Online publication date: 3-Aug-2020
  • (2019)Fully abstract module compilationProceedings of the ACM on Programming Languages10.1145/32903233:POPL(1-29)Online publication date: 2-Jan-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