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 first-class 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 higher-order 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.
On January 27, 1832, British mathematician, photographer, and children's book author Lewis Carroll, creator of the stories about 'Alice in Wonderland', was born.
we develop an approach for reconciling open programming -- the development of programs that support dynamic exchange of higher-order values with strong static typing. conventional functional language extended with a set of orthogonal features like higher-order modules, dynamic type checking, higher-order serialisation, and concurrency. On top of these a flexible system of dynamic components and a simple but expressive notion of distribution is realised. The central concept in this design is the packag}, a first-class value embedding a module along with its interface type. formal model for abstract types that is not invalidated by the presence of primitives for dynamic type inspection, as is the case for the standard model based on existential quantification. For that we present an idealised language in form of an extended lambda-calculus, which can express dynamic generation of types.
This document formally specifies the semantics of local modules and packages - dynamically typed modules that are first-class values - as an extension to the functional programming language Standard ML. The language thus defined is a substantial subset of a larger extension of Standard ML, a language known as Alice ML. Packages are the central feature of Alice ML that enables support for typed open programming.
R. Garlick, and E. Cankaya. ITiCSE '10: Proceedings of the fifteenth annual conference on Innovation and technology in computer science education, page 165--168. New York, NY, USA, ACM, (2010)
S. Rodger, M. Bashford, L. Dyck, J. Hayes, L. Liang, D. Nelson, and H. Qin. ITiCSE '10: Proceedings of the fifteenth annual conference on Innovation and technology in computer science education, page 234--238. New York, NY, USA, ACM, (2010)
S. Fincher, S. Cooper, M. Kölling, and J. Maloney. SIGCSE '10: Proceedings of the 41st ACM technical symposium on Computer science education, page 192--193. New York, NY, USA, ACM, (2010)
B. Moskal, D. Lurie, and S. Cooper. SIGCSE '04: Proceedings of the 35th SIGCSE technical symposium on Computer science education, page 75--79. New York, NY, USA, ACM, (2004)