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.
- 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 Scholar
Digital Library
- Alice Team. The Alice System. Programming System Lab, Universität des Saarlandes, http://www.ps.un-sb.de/alice/, 2003.]]Google Scholar
- D. Ancona and E. Zucca. A calculus of module systems. Journal of Fucntional Programming, 12(2), 2002.]] Google Scholar
Digital Library
- K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1996.]] Google Scholar
Digital Library
- E. Bainbridge, P. Freyd, A. Scedrov, and P. Scott. Functorial polymorphism. Theoretical Computer Science, 70(1), 1989.]] Google Scholar
Digital Library
- 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 Scholar
Digital Library
- M. Blume and A. Appel. Hierarchical modularity. Transactions on Programming Languages and Systems, 21(4), 1999.]] Google Scholar
Digital Library
- L. Cardelli. Program fragments, linking, and modularization. In Proc. 24th Symposium on Principles of Programming Languages, 1997.]] Google Scholar
Digital Library
- D. Dreyer. Understanding and Evolving the ML Module System. Phd thesis, Carnegie Mellon University, 2005.]] Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proc. Conference on Programming Language Design and Implementation, 1998.]] Google Scholar
Digital Library
- E. Gansner and J. Reppy. The Standard ML Basis Library. Cambridge University Press, 2004.]] Google Scholar
Digital Library
- J. Gosling, B. Joy, and G. Steele. The Java Programming Language Specification. Addison-Wesley, 1996.]] Google Scholar
Digital Library
- 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 Scholar
Digital Library
- X. Leroy. Manifest types, modules, and separate compilation. In Proc. 21st Symposium on Principles of Programming Languages, 1994.]] Google Scholar
Digital Library
- T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.]] Google Scholar
Digital Library
- D. MacQueen. Modules for Standard ML. In Symposium on LISP and Functional Programming, Austin, USA, 1984.]] Google Scholar
Digital Library
- R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). The MIT Press, 1997.]] Google Scholar
Digital Library
- J. Mitchell and G. Plotkin. Abstract types have existential type. Transactions on Programming Languages and Systems, 10(3), 1988.]] Google Scholar
Digital Library
- J. Niehren, J. Schwinghammer, and G. Smolka. A concurrent lambda calculus with futures. Theoretical Computer Science, forthcoming.]] Google Scholar
Digital Library
- M. Odersky. Programming in Scala. École Polytechnique Fédérale de Lausanne, 2005.]]Google Scholar
- M. Pil. First class file I/O. volume 1268 of Lecture Notes in Computer Science. Springer-Verlag, 1996.]] Google Scholar
Digital Library
- J. Reynolds. Types, abstraction and parametric polymorphism. In Information Processing. North Holland, 1983.]]Google Scholar
- A. Rossberg. Generativity and dynamic opacity for abstract types. In Proc. Principles and Practice of Declarative Programming, 2003.]] Google Scholar
Digital Library
- A. Rossberg. The definition of Standard ML with packages. Technical report, Universität des Saarlandes, 2005. www. ps.uni-sb.de/Papers.]]Google Scholar
- A. Rossberg. The Missing Link - Dynamic Components for ML (extended). Technical report, Universität des Saarlandes, 2006.]]Google Scholar
- 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 Scholar
Digital Library
- C. Russo. First-class structures for Standard ML. In Proc. 9th European Symposium on Programming, 2000.]] Google Scholar
Digital Library
- 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 Scholar
Digital Library
- G. Smolka. The Oz programming model. In Computer Science Today, volume 1000 of Lecture Notes in Computer Science. Springer, 1995.]] Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- P. Wadler. Theorems for free! In D. MacQueen, editor, Proc. 4th International Conference on Functional Programming and Computer Architecture, 1989.]] Google Scholar
Digital Library
Index Terms
The missing link: dynamic components for ML
Recommendations
The missing link: dynamic components for ML
ICFP '06: Proceedings of the eleventh ACM SIGPLAN international conference on Functional programmingDespite 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 ...
Modular extensions for modular (logic) languages
LOPSTR'11: Proceedings of the 21st international conference on Logic-Based Program Synthesis and TransformationWe address the problem of developing mechanisms for easily implementing modular extensions to modular (logic) languages. By (language) extensions we refer to different groups of syntactic definitions and translation rules that extend a language. Our use ...
Component nextgen: a sound and expressive component framework for java
OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applicationsDeveloping a general component system for a statically typed, object-oriented language is a challenging design problem for two reasons. First, mutually recursive references across components are common in object-oriented programs-an issue that has ...







Comments