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

skip to main content
research-article

Mixin' up the ML module system

Published: 20 September 2008 Publication History

Abstract

ML modules provide hierarchical namespace management, as well as fine-grained control over the propagation of type information, but they do not allow modules to be broken up into mutually recursive, separately compilable components. Mixin modules facilitate recursive linking of separately compiled components, but they are not hierarchically composable and typically do not support type abstraction. We synthesize the complementary advantages of these two mechanisms in a novel module system design we call MixML.
A MixML module is like an ML structure in which some of the components are specified but not defined. In other words, it unifies the ML structure and signature languages into one. MixML seamlessly integrates hierarchical composition, translucent MLstyle data abstraction, and mixin-style recursive linking. Moreover, the design of MixML is clean and minimalist; it emphasizes how all the salient, semantically interesting features of the ML module system (as well as several proposed extensions to it) can be understood simply as stylized uses of a small set of orthogonal underlying constructs, with mixin composition playing a central role.

Supplementary Material

JPG File (1411248.jpg)
index.html (index.html)
Slides from the presentation
ZIP File (p307-slides.zip)
Supplemental material for: Mixin' up the ML module system
Audio only (1411248.mp3)
Video (1411248.mp4)

References

[1]
D. Ancona, S. Fagorzi, E. Moggi, and E. Zucca. Mixin modules and computational effects. In ICALP '03.
[2]
Davide Ancona and Elena Zucca. A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science, 8(4):401--446, 1998.
[3]
Davide Ancona and Elena Zucca. A calculus of module systems. Journal of Functional Programming, 12(2):91--132, 2002.
[4]
Gilad Bracha and William Cook. Mixin-based inheritance. In OOPSLA '90.
[5]
Gilad Bracha and Gary Lindstrom. Modularity meets inheritance. In ICCL '92.
[6]
Karl Crary, Robert Harper, and Sidd Puri. What is a recursive module? In PLDI '99.
[7]
Derek Dreyer. A type system for recursive modules. In ICFP '07.
[8]
Derek Dreyer. A type system for well-founded recursion. In POPL '04.
[9]
Derek Dreyer. Recursive type generativity. Journal of Functional Programming, 17(4&5):433--471, 2007.
[10]
Derek Dreyer, Karl Crary, and Robert Harper. A type system for higher-order modules. In POPL '03.
[11]
Derek Dreyer and Andreas Rossberg. MixML (project website). http://www.mpi-sws.mpg.de/~rossberg/mixml/.
[12]
Dominic Duggan. Type-safe linking with recursive DLLs and shared libraries. ACM Transactions on Programming Languages and Systems, 24(6):711--804, 2002.
[13]
Dominic Duggan and Constantinos Sourelis. Mixin modules. In ICFP '96.
[14]
Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In PLDI '98.
[15]
Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. In POPL '94.
[16]
Robert Harper and Chris Stone. A type-theoretic interpretation of Standard ML. In Proof, Language, and Interaction: Essays in Honor of Robin Milner. MIT Press, 2000.
[17]
Tom Hirschowitz and Xavier Leroy. Mixin modules in a call-by-value setting. ACM Transactions on Programming Languages and Systems, 27(5):857--881, 2005.
[18]
Mark P. Jones. Using parameterized signatures to express modular structure. In POPL '96.
[19]
Xavier Leroy. Applicative functors and fully transparent higher-order modules. In POPL '95.
[20]
Xavier Leroy. Manifest types, modules, and separate compilation. In POPL '94.
[21]
Xavier Leroy. A modular module system. Journal of Functional Programming, 10(3):269--303, 2000.
[22]
Xavier Leroy. A proposal for recursive modules in Objective Caml, 2003. http://caml.inria.fr/pub/papers/xleroy-recursive_modules-03.pdf.
[23]
David MacQueen. Modules for Standard ML. In LFP '84.
[24]
Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
[25]
D. A. Moon. Object-oriented programming with Flavors. In OOPSLA '86.
[26]
Keiko Nakata and Jacques Garrigue. Recursive modules for programming. In ICFP '06.
[27]
Nathaniel Nystrom, Xin Qi, and Andrew Myers. J&: Nested intersection for scalable software composition. In OOPSLA '06.
[28]
M. Odersky, V. Cremet, C. Röckl, and M. Zenger. A nominal theory of objects with dependent types. In ECOOP '03.
[29]
Martin Odersky and Matthias Zenger. Scalable component abstractions. In OOPSLA '05.
[30]
Scott Owens and Matthew Flatt. From structures and functors to modules and units. In ICFP '06.
[31]
Norman Ramsey, Kathleen Fisher, and Paul Govereau. An expressive language of signatures. In ICFP '05.
[32]
Andreas Rossberg. The missing link - dynamic components for ML. In ICFP '06.
[33]
Claudio V. Russo. Recursive structures for Standard ML. In ICFP '01.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 43, Issue 9
ICFP '08
September 2008
399 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1411203
Issue’s Table of Contents
  • cover image ACM Conferences
    ICFP '08: Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
    September 2008
    422 pages
    ISBN:9781595939197
    DOI:10.1145/1411204
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]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 September 2008
Published in SIGPLAN Volume 43, Issue 9

Check for updates

Author Tags

  1. ML modules
  2. abstract data types
  3. hierarchical composability
  4. mixin modules
  5. recursive modules
  6. type systems

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)1
Reflects downloads up to 20 Nov 2024

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media