skip to main content
10.1145/1159803.1159815acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

From structures and functors to modules and units

Published: 16 September 2006 Publication History

Abstract

Component programming techniques encourage abstraction and reuse through external linking. Some parts of a program, however, must use concrete, internally specified references, so a pure component system is not a sufficient mechanism for structuring programs. We present the combination of a static, internally-linked module system and a purely abstractive component system. The latter extends our previous model of typed units to properly account for translucency and sharing. We also show how units and modules can express an SML-style system of structures and functors, and we explore the consequences for recursive structures and functors.

References

[1]
D. Ancona, F. Damiani, S. Drossopoulou, and E. Zucca. Polymorphic bytecode: compositional compilation for Java-like languages. In Proc. Principles of Programming Languages, 2005.]]
[2]
D. Ancona and E. Zucca. True modules for Java-like languages. In Proc. European Conference on Object-Oriented Programming, 2001.]]
[3]
D. Ancona and E. Zucca. A calculus of module systems. J. Funct. Program., 12(2):91--132, 2002.]]
[4]
M. Blume and A. W. Appel. Hierarchical modularity. ACM Trans. Program. Lang. Syst., 21(4):813--847, 1999.]]
[5]
G. Boudol. The recursive record semantics of objects revisited. J. Funct. Program., 14(3):263--315, 2004.]]
[6]
H. Cejtin, M. Fluet, S. Jagannathan, and S. Weeks. Formal specification of the ML basis system. http://mlton. org/pages/MLBasis/attachments/mlb-formal.pdf, January 2005.]]
[7]
K. Crary, R. Harper, and S. Puri. What is a recursive module? In Proc. Programming Language Design and Implementation, 1999.]]
[8]
D. Dreyer. A type system for well-founded recursion. In Proc. Principles of Programming Languages, 2004.]]
[9]
D. Dreyer. Recursive type generativity. In Proc. International Conference on Functional Programming, 2005.]]
[10]
D. Dreyer. Understanding and Evolving the ML Module System. PhD thesis, Carnegie Mellon University, 2005.]]
[11]
D. Dreyer, K. Crary, and R. Harper. A type system for higher-order modules. In Proc. Principles of Programming Languages, 2003.]]
[12]
D. Duggan and C. Sourelis. Mixin modules. In Proc. International Conference on Functional Programming, 1996.]]
[13]
M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proc. Programming Language Design and Implementation, 1998.]]
[14]
R. Harper and M. Lillibridge. A type-theoretic approach to higherorder modules with sharing. In Proc. Principles of Programming Languages, 1994.]]
[15]
T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting. ACM Trans. Program. Lang. Syst., 27(5):857--881, 2005.]]
[16]
T. Hirschowitz, X. Leroy, and J. B. Wells. Compilation of extended recursion in call-by-value functional languages. In Proc. Principles and Practice of Declaritive Programming, 2003.]]
[17]
T. Hirschowitz, X. Leroy, and J. B. Wells. Call-by-value mixin modules: Reduction semantics, side effects, types. In Proc. The European Symposium on Programming, 2004.]]
[18]
S.P. Jones, editor. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.]]
[19]
R. Kelsey, J. Rees, and M. Sperber. Scheme48 Reference Manual, 1.3 edition, 2005. http://s48.org/1.3/s48manual.pdf.]]
[20]
X. Leroy. Manifest types, modules, and separate compilation. In Proc. Principles of Programming Languages, 1994.]]
[21]
X. Leroy. The Objective Caml System, 3.08 edition, 2004. http://caml.inria.fr/pub/docs/manual-ocaml/index.html.]]
[22]
H. Makholm and J.B. Wells. Type inference, principal typings, and let-polymorphism for first-class mixin modules. In Proc. International Conference on Functional Programming, 2005.]]
[23]
R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). The MIT Press, Cambridge, Massachusetts, 1997.]]
[24]
M. Odersky and M. Zenger. Scalable component abstractions. In Proc. Object Oriented Programming, Systems, Languages, and Applications, 2005.]]
[25]
C. Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.]]
[26]
C.V. Russo. Recursive structures for Standard ML. In Proc. International Conference on Functional Programming, 2001.]]
[27]
M. Serrano. Bigloo: A "practical Scheme compiler", 2.6e edition, Aug. 2004. http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo.html.]]
[28]
D. Swasey, T. Murphy VII, K. Crary, and R. Harper. A separate compilation extension to Standard ML (working draft). Technical Report CMU-CS-06-104, School of Computer Science, Carnegie Mellon University, January 2006.]]
[29]
D. Syme. Initializing mutually referential abstract objects: The value recursion challenge. In Proc. Workshop on ML, 2005.]]
[30]
C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, New York, 1997.]]
[31]
O. Waddell and R.K. Dybvig. Extending the scope of syntactic abstraction. In Proc. Principles of Programming Languages, 1999.]]
[32]
J.B. Wells and R. Vestergaard. Equational reasoning for linking with first-class primitive modules. In Proc. European Symposium on Programming Languages and Systems, 2000.]]

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICFP '06: Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
September 2006
308 pages
ISBN:1595933093
DOI:10.1145/1159803
  • General Chair:
  • John Reppy,
  • Program Chair:
  • Julia Lawall
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 41, Issue 9
    Proceedings of the 2006 ICFP conference
    September 2006
    296 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1160074
    Issue’s Table of Contents
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: 16 September 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. component
  2. functor
  3. module
  4. structure
  5. unit

Qualifiers

  • Article

Conference

ICFP06
Sponsor:

Acceptance Rates

Overall Acceptance Rate 333 of 1,064 submissions, 31%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all

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