Pieter Koopman

Creating a DSL for Task Oriented Programming of the IoT

I am an experience researcher in functional programming. I have been deeply involved in the design and implementation of embedded DSLs for property-based testing, state-based testing, task-oriented programming and tierless IoT programming. All of these topics are described in scientific publications. I wrote several publications on implementation techniques of eDSLs. My master course about advanced programming is largely focused about the design and implementation of embedded DSLs.

www.ru.nl/icis/

For interactive systems it is often desirable that users can create tasks for the system dynamically. Often these tasks are internally specified by constrained types like Generalized DataTypes, GADTs, or function applications using typeclasses. For plain datatypes, or the corresponding functions, this is relative easy: the input can be captured by a structured editor or a simple parser from a textual input. However, in many situations such simple types are not enough. We either need GADTs or more constraints than can be checked by a parser.
To guarantee correct inputs we either need the invoke the compiler of the host language and add the compiled input dynamically to the program, or we need implement a rather complicated type-checker for the input. Both solutions are complicated and require a significant of work. Fortunately, Clean provides an advanced type-system for its dynamics. The existing type-system for these dynamic values can check all required type constraints. In this paper we show how we can make dynamic editors for complex user inputs in iTask programs using these dynamic types.

Slides
Video ←Back