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 2006Publication 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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. D. Ancona and E. Zucca. True modules for Java-like languages. In Proc. European Conference on Object-Oriented Programming, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. D. Ancona and E. Zucca. A calculus of module systems. J. Funct. Program., 12(2):91--132, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Blume and A. W. Appel. Hierarchical modularity. ACM Trans. Program. Lang. Syst., 21(4):813--847, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. G. Boudol. The recursive record semantics of objects revisited. J. Funct. Program., 14(3):263--315, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle Scholar
  7. K. Crary, R. Harper, and S. Puri. What is a recursive module? In Proc. Programming Language Design and Implementation, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. D. Dreyer. A type system for well-founded recursion. In Proc. Principles of Programming Languages, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. Dreyer. Recursive type generativity. In Proc. International Conference on Functional Programming, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Dreyer. Understanding and Evolving the ML Module System. PhD thesis, Carnegie Mellon University, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Dreyer, K. Crary, and R. Harper. A type system for higher-order modules. In Proc. Principles of Programming Languages, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. D. Duggan and C. Sourelis. Mixin modules. In Proc. International Conference on Functional Programming, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proc. Programming Language Design and Implementation, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Harper and M. Lillibridge. A type-theoretic approach to higherorder modules with sharing. In Proc. Principles of Programming Languages, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting. ACM Trans. Program. Lang. Syst., 27(5):857--881, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]]Google ScholarGoogle ScholarCross RefCross Ref
  18. S.P. Jones, editor. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.]]Google ScholarGoogle Scholar
  19. R. Kelsey, J. Rees, and M. Sperber. Scheme48 Reference Manual, 1.3 edition, 2005. http://s48.org/1.3/s48manual.pdf.]]Google ScholarGoogle Scholar
  20. X. Leroy. Manifest types, modules, and separate compilation. In Proc. Principles of Programming Languages, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. X. Leroy. The Objective Caml System, 3.08 edition, 2004. http://caml.inria.fr/pub/docs/manual-ocaml/index.html.]]Google ScholarGoogle Scholar
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). The MIT Press, Cambridge, Massachusetts, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Odersky and M. Zenger. Scalable component abstractions. In Proc. Object Oriented Programming, Systems, Languages, and Applications, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. C. Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. C.V. Russo. Recursive structures for Standard ML. In Proc. International Conference on Functional Programming, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Serrano. Bigloo: A "practical Scheme compiler", 2.6e edition, Aug. 2004. http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo.html.]]Google ScholarGoogle Scholar
  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.]]Google ScholarGoogle ScholarCross RefCross Ref
  29. D. Syme. Initializing mutually referential abstract objects: The value recursion challenge. In Proc. Workshop on ML, 2005.]]Google ScholarGoogle Scholar
  30. C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, New York, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. O. Waddell and R.K. Dybvig. Extending the scope of syntactic abstraction. In Proc. Principles of Programming Languages, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. From structures and functors to modules and units

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • 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

      Copyright © 2006 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 16 September 2006

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

      Acceptance Rates

      Overall Acceptance Rate333of1,064submissions,31%

      Upcoming Conference

      ICFP '23

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!