Papers by Rinus Plasmeijer
Clean language report version 2

In this paper we present the iData Toolkit. It allows programmers to create interactive, dynamic ... more In this paper we present the iData Toolkit. It allows programmers to create interactive, dynamic web applications with state on a high level of abstraction. The key element of this toolkit is the iData element. An iData element can be regarded as a self-contained object that stores values of a specified type. Generic programming techniques enable the automatic generation of HTML-forms from these types. These forms can be plugged into the web application. The iData elements can be interconnected. Complicated form dependencies can be defined in a pure functional, type safe, declarative programming style. This liberates the programmer from lots of low-level HTML programming and form handling. We illustrate the descriptive power of the toolkit by means of a small, yet complicated example: a project administration. The iData Toolkit is an excellent demonstration of the expressive power of modern generic (poly-typical) programming techniques.
Draft A Typical Synergy
Static typing is not always sufficient in strongly typed func- tional programming languages since... more Static typing is not always sufficient in strongly typed func- tional programming languages since some types will only be known at run-time. Especially systems that require user input have to deal with this issue. Dynamic types provide a clean approach to integrating dy- namic typing in a statically typed language. Dynamic systems, such as structure editors, transform complex internal structures

In slightly less than two decades Graphical User Interfaces (GUI) have become standard in present... more In slightly less than two decades Graphical User Interfaces (GUI) have become standard in presenting the user a pleasant and intuitive interface to software applications. Two major paradigms have contributed to this success: the desktop GUI for widget based programming on a single computer, and the World Wide Web for web applications with a multitude of client computers. Applications that are created within these paradigms are constructed in entirely different ways. Desktop applications can use the vast platform dependent API, or rely on platform independent toolkits. Web applications are confined within web browsers, but they can stretch these limits by relying on a wide variety of scripting languages. This has resulted in 'typical' desktop and web applications. However, one can observe the trend that desktop and web applications are taking over each others functionality: former desktop GUI applications now also offer back/forward buttons, hyperlinks from web applications, and web applications use multiple windows/dialogues, disallow browser window cloning, and so on. Hence, the clear separation between desktop and web applications is blurring. This implies that in order to reason rigidly about interactive applications in general, we need a semantic model that is capable of handling these two, formerly separated, paradigms. In this paper we present a first step towards such a framework. This work is based on our earlier work on the iData and GEC toolkits.
We discuss how strict and unboxed lists are defined and implemented in the lazy functional progra... more We discuss how strict and unboxed lists are defined and implemented in the lazy functional programming language Clean 2.0. Multiparameter type constructor classes are used to overload both pattern matching and construction of lists. The overhead of overloading is eliminated by creating specialized versions of overloaded functions during compilation. Our measurements of the execution time of some programs show that some programs execute several times faster using strict or unboxed lists instead of lazy lists.
Towards distributed interactive applications in the functional programming language Clean
Some implementation issues on the Clean Object I/O library
Draft A Typical Synergy
Static typing is not always sufficient in strongly typed func- tional programming languages since... more Static typing is not always sufficient in strongly typed func- tional programming languages since some types will only be known at run-time. Especially systems that require user input have to deal with this issue. Dynamic types provide a clean approach to integrating dy- namic typing in a statically typed language. Dynamic systems, such as structure editors, transform complex internal structures

Generic programming enables the programmer to define functions by induction on the structure of t... more Generic programming enables the programmer to define functions by induction on the structure of types. Defined once, such a generic function can be used to generate a specialized function for any user defined data type. Several ways to support generic programming in functional languages have been proposed. The approach with kind-indexed types makes it possible to define generic functions indexed by types of different kinds. Another approach allows to define default implementation for instances of type classes in a generic way. In this paper we describe a combination of these two approaches, which has advantages of both of them. The key idea of our approach is that a generic function generates a kind-indexed system of type classes, one class per kind. The class variable of such a class ranges over types of the corresponding kind. For instance, an overloaded equality operator can be defined as a specific case of a generic equality function for kind . Additionally, we propose a separate extension that allows to specify a customized instance of a generic function for a type in terms of the generated instance for that type.
Towards a Strongly Typed
ABSTRACT
Lazy Dynamic Input/Output in the lazy
ABSTRACT
We investigate the suitability of functional languages for the description and the e cient implem... more We investigate the suitability of functional languages for the description and the e cient implementation of algorithms in numerical linear algebra. Therefore two algorithms to solve linear systems are implemented in Clean, discussed and compared to implementations of the same algorithms in C and Matlab. A library of Clean functions is introduced, that provides basic functionality for computations in numerical linear algebra in an intuitive way. The comparison of run-times displays the con ict of elegant versus e cient code.
An Approach to Slicing - Working With Submatrices in Clean
ABSTRACT
Lecture Notes in Computer Science, 2000
Efficient distributed memory implementation of a data parallel functional language
Lecture Notes in Computer Science, 1994
ABSTRACT
Term graph rewriting: theory and practice
Google, Inc. (search). ...
Capturing the Netherlands Coast Guard's SAR Workflow with iTasks
Theoretical Computer Science, 2011
The dynamic nature of crisis response operations and the rigidity of workflow modelling languages... more The dynamic nature of crisis response operations and the rigidity of workflow modelling languages are two things that do not go well together. A recent alternative approach to workflow management systems that allows for more flexibility is the iTask system. It uses an embedded functional language for the specification of workflow models that integrates control-flow with data-flow in dynamic data-dependent

G∀ST is a fully automatic test system. Given a logical property, stated as a function, it is able... more G∀ST is a fully automatic test system. Given a logical property, stated as a function, it is able to generate appropriate test values, to execute tests with these values, and to evaluate the results of these tests. Many reactive systems, like automata and protocols, however, are specified by a model rather than in logic. There exist tools that are able to test software described by such a modelbased specification, but these tools have limited capabilities to generate test data involving data types. Moreover, in these tools it is hard or even impossible to state properties of these values in logic. In this paper we introduce some extensions of G∀ST to combine the best of logic and model based testing. The integration of model based testing and testing based on logical properties in a single automated system is the contribution of this paper. The system consists only of a small library rather than a huge stand-alone system.
A type safe interactive interpreter for a functional language using compiled code
Uploads
Papers by Rinus Plasmeijer