Rinus Plasmeijer (University of Nijmegen)
Clean offers a hybrid type system. Values of any static type, e.g. data, closures, and functions (i.e. compiled code) can be turned into a dynamically typed value (a "Dynamic") and the other way around. The dynamic type system and the dynamic linker enable the communication of "Dynamics" between running applications in a type safe way. In this way one can realize type safe mobile code and plug-ins.
We have implemented a tiny Operating System using "Dynamics". It includes an interactive shell, Esther, which offers a Clean-like command language. One can apply applications, and define new (polymorphic or overloaded) functions. The shell can be used for manipulating files, applications, data and processes at the command line. Files are typed, and applications are simply files with a function type. The shell does type checking and only executes well-typed expressions.
The shell looks like an interpreter (it gives direct response) but actually it only recombines compiled code. Applications (compiled functions) can be reused, in a type safe way, in the shell, and functions defined in the shell can be reused by any compiled application.
In this lecture we will write tiny, stand alone, Clean applications that exchange data and code. We combine these applications with functions defined in the shell.