skip to main content
article

The missing link: dynamic components for ML

Published:16 September 2006Publication History
Skip Abstract Section

Abstract

Despite its powerful module system, ML has not yet evolved for the modern world of dynamic and open modular programming, to which more primitive languages have adapted better so far. We present the design and semantics of a simple yet expressive firstclass component system for ML. It provides dynamic linking in a type-safe and type-flexible manner, and allows selective execution in sandboxes. The system is defined solely by reduction to higherorder modules plus an extension with simple module-level dynamics, which we call packages. To represent components outside processes we employ generic pickling. We give a module calculus formalising the semantics of packages and pickling.

References

  1. M. Abadi, L. Cardelli, B. Pierce, and G. Plotkin. Dynamic typing in a statically-typed language. Transactions on Programming Languages and Systems, 13 2), 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Alice Team. The Alice System. Programming System Lab, Universität des Saarlandes, http://www.ps.un-sb.de/alice/, 2003.]]Google ScholarGoogle Scholar
  3. D. Ancona and E. Zucca. A calculus of module systems. Journal of Fucntional Programming, 12(2), 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. E. Bainbridge, P. Freyd, A. Scedrov, and P. Scott. Functorial polymorphism. Theoretical Computer Science, 70(1), 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. G. Bierman, M. Hicks, P. Sewell, G. Stoyle, and K. Wansbrough. Dynamic rebinding for marshalling and update, with destruct-time lambda. In Proc. 8th International Conference on Functional Programming, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Blume and A. Appel. Hierarchical modularity. Transactions on Programming Languages and Systems, 21(4), 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. L. Cardelli. Program fragments, linking, and modularization. In Proc. 24th Symposium on Principles of Programming Languages, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. Dreyer. Understanding and Evolving the ML Module System. Phd thesis, Carnegie Mellon University, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Dreyer, K. Crary, and R. Harper. A type system for higher-order modules. In Proc. 30th Symposium on Principles of Programming Languages, 2003. Expanded version available as CMU Technical Report CMU-CS-02-122R.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Duchier, L. Kornstaedt, C. Schulte, and G. Smolka. A higher-order module discipline with separate compilation, dynamic linking, and pickling. Technical report, Universität des Saarlandes, 1998.]]Google ScholarGoogle Scholar
  12. M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proc. Conference on Programming Language Design and Implementation, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Gansner and J. Reppy. The Standard ML Basis Library. Cambridge University Press, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. J. Gosling, B. Joy, and G. Steele. The Java Programming Language Specification. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. R. Harper and M. Lillibridge. A type-theoretic approach to higherorder modules with sharing. In Proc. 21st Symposium on Principles of Programming Languages, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. X. Leroy. Manifest types, modules, and separate compilation. In Proc. 21st Symposium on Principles of Programming Languages, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. D. MacQueen. Modules for Standard ML. In Symposium on LISP and Functional Programming, Austin, USA, 1984.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). The MIT Press, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. Mitchell and G. Plotkin. Abstract types have existential type. Transactions on Programming Languages and Systems, 10(3), 1988.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Niehren, J. Schwinghammer, and G. Smolka. A concurrent lambda calculus with futures. Theoretical Computer Science, forthcoming.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Odersky. Programming in Scala. École Polytechnique Fédérale de Lausanne, 2005.]]Google ScholarGoogle Scholar
  23. M. Pil. First class file I/O. volume 1268 of Lecture Notes in Computer Science. Springer-Verlag, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Reynolds. Types, abstraction and parametric polymorphism. In Information Processing. North Holland, 1983.]]Google ScholarGoogle Scholar
  25. A. Rossberg. Generativity and dynamic opacity for abstract types. In Proc. Principles and Practice of Declarative Programming, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Rossberg. The definition of Standard ML with packages. Technical report, Universität des Saarlandes, 2005. www. ps.uni-sb.de/Papers.]]Google ScholarGoogle Scholar
  27. A. Rossberg. The Missing Link - Dynamic Components for ML (extended). Technical report, Universität des Saarlandes, 2006.]]Google ScholarGoogle Scholar
  28. A. Rossberg, D. Le Botlan, G. Tack, T. Brunklaus, and G. Smolka. Alice ML through the looking glass. In Trends in Functional Programming, volume 5. Intellect, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. C. Russo. First-class structures for Standard ML. In Proc. 9th European Symposium on Programming, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. P. Sewell, J. Leifer, K. Wansbrough, F. Z. Nardelli, M. Allen-Williams, P. Habouzit, and V. Vafeiadis. Acute: high-level programming language design for distributed computation. In 10th International Conference on Funcitonal Programming, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. G. Smolka. The Oz programming model. In Computer Science Today, volume 1000 of Lecture Notes in Computer Science. Springer, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. D. Swasey, T. Murphy, K. Crary, and R. Harper. A separate compilation extension to standard ml. Technical Report CMUCS-06-104, Carnegie Mellon University, 2006.]]Google ScholarGoogle ScholarCross RefCross Ref
  33. B. Thomsen, L. Leth, and T. -M. Kuo. A facile tutorial. In 7th International Conference on Concurrency Theory, volume 1119 of Lecture Notes in Computer Science, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. P. Wadler. Theorems for free! In D. MacQueen, editor, Proc. 4th International Conference on Functional Programming and Computer Architecture, 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The missing link: dynamic components for ML

      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

      Full Access

      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!