Sjaak Smesters, University of Nijmegen, Hollandia 2002. október 14-18 ============================================ Subjects: Typing systems (Standard Milner/Mycroft typing, Uniqueness Typing, Strictness Typing), Dynamics and Generics. Overview: Typing systems play a crucial role in (implementations of) functional languages. They not only prevent the programmer of making some obvious mistakes but they are also indispensable in the code generation phase of the compiler. Nowadays, typing systems are no longer restricted to standard Milner/Mycroft typing. They are also used to derive additional properties of functional programs such as strictness and uniqueness. Strictness information can used to replace inefficient call-by-need evaluation by efficient call-by-value evaluation. Uniqueness information is essential for incorporating destructive updates without violating referential transparency. The latest development of typing in Clean covers two new directions. One has to do with the problem that arises when a function communicates with the outside world, for instance via a file system. Traditionally files, streams and more sophisticated plug-ins are not typed. With Dynamics one can use such external resources in a fully type safe way. The other direction is related to software development. When a functional programmer introduces a new data type there is always a need for a collection of more or less standard operations on such a data type (e.g. equality and conversion to string). With Generics one can specify such operations not by using a specific data type but more generally by using the structure of data types. For this purpose one considers data types as being built up from a small set of generic type constructors. By specifying a generic operation on this small set only one automatically inherits an instance of this operation for any concrete user defined data type.