Rinus Plasmeijer - Academia.edu (original) (raw)
Papers by Rinus Plasmeijer
functional languages, the shape of the external world af- fects both our understanding of I/O and... more functional languages, the shape of the external world af- fects both our understanding of I/O and how we would wish to have I/O expressed. This paper takes the first tentative steps at examining the consequences of using an explicit model of the external world-state when reasoning (using tool-support) about the behaviour of lazy functional pro- grams. We construct a file-system model and develop a monadic language which lets us structure I/O. Two proofs are then performed regarding the observable eect of real- world functional I/O, and it is shown how properties of the file-system lend themselves naturally to the modelling of concurrent behaviour on a single, global state. All proofs in this paper were machine-verified using the Sparkle proof- assistant.
Lecture Notes in Computer Science
When writing a user interface (UI), the layout of its elements play an important role. Programmer... more When writing a user interface (UI), the layout of its elements play an important role. Programmers should be able to specify the layout of UIs in an intuitive way, while being able to separate the concern of laying out the UI from the rest of the software implementation. Ideally, the same layout language can be used in multiple application domains, so the programmer only has to learn one set of layout concepts. In this paper we introduce such a general-purpose layout language. We obtain this language by abstracting from a layout language we have introduced in previous work for declaratively defining Scalable Vector Graphics (SVG). We show that this abstract layout language can be instantiated for multiple domains: the SVG library by which the language is inspired, ncurses-based text-based user interfaces, and iTasks. In all of these cases, a separation of concerns is maintained.
IFL'03: 15th International Symposium on the Implementation of Functional Languages, Edinburgh... more IFL'03: 15th International Symposium on the Implementation of Functional Languages, Edinburgh, Scotland, September 8th - 10th, 2003
The Internet of Things, IoT, brings us large amounts of connected computing devices that are equi... more The Internet of Things, IoT, brings us large amounts of connected computing devices that are equipped with dedicated sensors and actuators. These computing devices are typically driven by a cheap microprocessor system with a relatively slow processor and a very limited amount of memory. Due to the special input-output capabilities of IoT devices and their connections it is very attractive to execute (parts of) programs on these microcomputers.
In this paper we present the iData Toolkit. This toolkit offers web programmers a novel approach ... more In this paper we present the iData Toolkit. This toolkit offers web programmers a novel approach to programming interactive, dynamic web-sites with state on a high level of abstraction. The used concepts are inspired on our previous work on GUI programming. The key idea is to program applications with pure functional data models and functions from which the desktop GUI is derived automatically. In this paper we transfer these high level concepts to the web and show that web applications can be programmed in the same style. In addition we incorporate a number of improvements to the programming method. Because web technology is completely different from desktop GUI programming, we had to design an entirely new implementation method. The essential parts of this implementation rely on generic programming techniques. This has resulted in a concise and flexible implementation. The iData Toolkit is an excellent case study in applying generic programming techniques.
Lecture Notes in Computer Science
Graph rewriting (also called reduction) as defined in Wadsworth [t971] was inn'educed in order to... more Graph rewriting (also called reduction) as defined in Wadsworth [t971] was inn'educed in order to be able to give a more efficient implementation of functional programming languages in the form of lambda calculus or term rewrite systems: identical subterms are shared using pointers. Several other authors, e.g. Ehrig [1979], Staples [i980a, b,c], Raoult [1984] and van den Brock et al. [1986] have given mathematical descriptions of graph rewriting, usually employing concepts from category theory. These papers prove among other things the correcmess of graph rewriting in the form of the Church-Rosser property for "well-behaved" (i.e. regular) rewrite systems. However, only Staples has formally studied the soundness and completeness of graph rewriting with respect to term rewriting. In this paper we give a direct operational description of graph rewriting that avoids the category theoretic notions. We show that if a term t is interpreted as a graph g(t) and is reduced in the graph world, then the result represents an actual reduet of the origilaal term t (soundness). For weakly regular term rewrite systems, there is also a completeness result: every normal form of a term t can be obtained from the graphical implementation. We also show completeness for all term rewrite systems which possess a so called hypernormalising strategy, and in that case the strategy also gives a normalising strategy for the graphical implementation. Besides having nice theoretical properties, weakly regular systems offer opportunities for parallelism, since redexes at different places car~ be executed independently or in parallel, without affecting the f'mal result.
Lecture Notes in Computer Science
Lean is an experimental language for specifying computations in terms of graph rewriting. It is b... more Lean is an experimental language for specifying computations in terms of graph rewriting. It is based on an alternative to Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a set of graph rewrite rules which specify how a graph may be rewritten. Besides supporting functional programming, Lean also describes imperative constructs and allows the manipulation of cyclic graphs. Programs may exhibit non-determinism as well as parallelism. In particular, Lean can serve as an intermediate language between declarative languages and machine architectures, both sequential and parallel.
Proceedings of the 31st Symposium on Implementation and Application of Functional Languages
Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices ... more Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices are small, cheap, and energy efficient. However, they are not very powerful and lack an Operating System. Hence it is difficult to apply high level abstractions and write software that stays close to the design. Task Oriented Programming (TOP) is a paradigm for creating multiuser collaborative systems. A program consists of tasksdescriptions of what needs to be done. The tasks represent the actual work and a task value is observable during execution. Furthermore, tasks can be combined and transformed using combinators. mTask is an embedded Domain Specific Language (eDSL) to program MCUs following the TOP paradigm. Previous work has described the mTask language, a static C code generator, and how to integrate mTask with TOP servers. This paper shows that for dynamic IOT applications, tasks must be sent at runtime to the devices for interpretation. It describes in detail how to compile specialized IOT TOP tasks to bytecode and how to interpret them on devices with very little memory. These additions allow the creation of complete, dynamic IOT applications arising from a single source using a mix of iTasks and mTask tasks. Details such as serialization and communication are captured in simple abstractions. CCS CONCEPTS • Computer systems organization → Distributed architectures; • Software and its engineering → Client-server architectures; Functional languages; Domain specific languages.
Proceedings of the Real World Domain Specific Languages Workshop 2018 on - RWDSL2018
The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These de... more The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These devices have typically very limited computing power and severe memory restrictions to make them cheap and power efficient. These devices can interact with the environment via special sensors and actuators. Since each device controls several peripherals running interleaved, the control software is quite complicated and hard to maintain. Task Oriented Programming, TOP, offers lightweight communicating threads that can inspect each other's intermediate results. This makes it well suited for the IoT. In this paper presents a functional task-based domain specific language for these IoT devices. We show that it yields concise control programs. By restricting the datatypes and using strict evaluation these programs fit within the restrictions of microcontrollers. CCS Concepts • Software and its engineering → Domain specific languages;
Proceedings of the 31st Symposium on Implementation and Application of Functional Languages
Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages
Task Oriented Programming (TOP) is a special flavor of functional programming for real-world appl... more Task Oriented Programming (TOP) is a special flavor of functional programming for real-world application domains in which people and automated systems collaborate to achieve a common goal. The original iTasks framework, which implements TOP, uses a single server multi-client architecture. This is not suited for truly distributed application domains, such as deployed by the Dutch coast guard. In this paper we show how to turn this architecture into a distributed, dynamic, architecture. This is done in an elegant way, by building on the core concepts of TOP and iTasks. CCS CONCEPTS • Software and its engineering → Functional languages; • Computer systems organization → Distributed architectures; • Human-centered computing → Computer supported cooperative work;
Proceedings of the 29th Symposium on Implementation and Application of Functional Programming Languages - IFL 2017, 2017
Lecture Notes in Computer Science, 2016
This paper extends our method to construct a shallow embedded domain specific language, DSL, embe... more This paper extends our method to construct a shallow embedded domain specific language, DSL, embedded in a function programming language. We show how one can add functions and tasks that are typed by the type system of the functional host language. The DSL is clearly separated from its host functional language to facilitate the compilation to small executables in C++. The type system of the host language verifies the types in the DSL, including the types and proper use of variables. The DSL is extendable by new language constructs and interpretations without breaking any existing code. The type system guarantees that everything used in a DSL program is properly defined. We apply these techniques for a DSL to program Arduino microprocessor systems from Clean. The long term goal is to incorporate these microprocessors in the iTask system.
Artificial Neural Networks, 1991
Functional programming languages have been successfully employed to make executable neural networ... more Functional programming languages have been successfully employed to make executable neural network descriptions. For the sake of efficiency, the programs are mixtures between descriptions of the behaviour and the data-flow needed to obtain an efficient algorithm. This has a bad influence on the descriptions' readability. In this paper, we will present a functional description of a neural network which isn't hampered by any efficiency considerations. Our description of a neural network is a mathematical specification of that network. Using an ordinary functional programming language evaluation strategy, our network description has a time complexity which is exponential in the number of learning steps of the network. Using an evaluation strategy which is improved with a memoizing facility, the specification has an almost linear time complexity in the number of learning steps.
Lecture Notes in Computer Science, 2008
functional languages, the shape of the external world af- fects both our understanding of I/O and... more functional languages, the shape of the external world af- fects both our understanding of I/O and how we would wish to have I/O expressed. This paper takes the first tentative steps at examining the consequences of using an explicit model of the external world-state when reasoning (using tool-support) about the behaviour of lazy functional pro- grams. We construct a file-system model and develop a monadic language which lets us structure I/O. Two proofs are then performed regarding the observable eect of real- world functional I/O, and it is shown how properties of the file-system lend themselves naturally to the modelling of concurrent behaviour on a single, global state. All proofs in this paper were machine-verified using the Sparkle proof- assistant.
Lecture Notes in Computer Science
When writing a user interface (UI), the layout of its elements play an important role. Programmer... more When writing a user interface (UI), the layout of its elements play an important role. Programmers should be able to specify the layout of UIs in an intuitive way, while being able to separate the concern of laying out the UI from the rest of the software implementation. Ideally, the same layout language can be used in multiple application domains, so the programmer only has to learn one set of layout concepts. In this paper we introduce such a general-purpose layout language. We obtain this language by abstracting from a layout language we have introduced in previous work for declaratively defining Scalable Vector Graphics (SVG). We show that this abstract layout language can be instantiated for multiple domains: the SVG library by which the language is inspired, ncurses-based text-based user interfaces, and iTasks. In all of these cases, a separation of concerns is maintained.
IFL'03: 15th International Symposium on the Implementation of Functional Languages, Edinburgh... more IFL'03: 15th International Symposium on the Implementation of Functional Languages, Edinburgh, Scotland, September 8th - 10th, 2003
The Internet of Things, IoT, brings us large amounts of connected computing devices that are equi... more The Internet of Things, IoT, brings us large amounts of connected computing devices that are equipped with dedicated sensors and actuators. These computing devices are typically driven by a cheap microprocessor system with a relatively slow processor and a very limited amount of memory. Due to the special input-output capabilities of IoT devices and their connections it is very attractive to execute (parts of) programs on these microcomputers.
In this paper we present the iData Toolkit. This toolkit offers web programmers a novel approach ... more In this paper we present the iData Toolkit. This toolkit offers web programmers a novel approach to programming interactive, dynamic web-sites with state on a high level of abstraction. The used concepts are inspired on our previous work on GUI programming. The key idea is to program applications with pure functional data models and functions from which the desktop GUI is derived automatically. In this paper we transfer these high level concepts to the web and show that web applications can be programmed in the same style. In addition we incorporate a number of improvements to the programming method. Because web technology is completely different from desktop GUI programming, we had to design an entirely new implementation method. The essential parts of this implementation rely on generic programming techniques. This has resulted in a concise and flexible implementation. The iData Toolkit is an excellent case study in applying generic programming techniques.
Lecture Notes in Computer Science
Graph rewriting (also called reduction) as defined in Wadsworth [t971] was inn'educed in order to... more Graph rewriting (also called reduction) as defined in Wadsworth [t971] was inn'educed in order to be able to give a more efficient implementation of functional programming languages in the form of lambda calculus or term rewrite systems: identical subterms are shared using pointers. Several other authors, e.g. Ehrig [1979], Staples [i980a, b,c], Raoult [1984] and van den Brock et al. [1986] have given mathematical descriptions of graph rewriting, usually employing concepts from category theory. These papers prove among other things the correcmess of graph rewriting in the form of the Church-Rosser property for "well-behaved" (i.e. regular) rewrite systems. However, only Staples has formally studied the soundness and completeness of graph rewriting with respect to term rewriting. In this paper we give a direct operational description of graph rewriting that avoids the category theoretic notions. We show that if a term t is interpreted as a graph g(t) and is reduced in the graph world, then the result represents an actual reduet of the origilaal term t (soundness). For weakly regular term rewrite systems, there is also a completeness result: every normal form of a term t can be obtained from the graphical implementation. We also show completeness for all term rewrite systems which possess a so called hypernormalising strategy, and in that case the strategy also gives a normalising strategy for the graphical implementation. Besides having nice theoretical properties, weakly regular systems offer opportunities for parallelism, since redexes at different places car~ be executed independently or in parallel, without affecting the f'mal result.
Lecture Notes in Computer Science
Lean is an experimental language for specifying computations in terms of graph rewriting. It is b... more Lean is an experimental language for specifying computations in terms of graph rewriting. It is based on an alternative to Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a set of graph rewrite rules which specify how a graph may be rewritten. Besides supporting functional programming, Lean also describes imperative constructs and allows the manipulation of cyclic graphs. Programs may exhibit non-determinism as well as parallelism. In particular, Lean can serve as an intermediate language between declarative languages and machine architectures, both sequential and parallel.
Proceedings of the 31st Symposium on Implementation and Application of Functional Languages
Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices ... more Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices are small, cheap, and energy efficient. However, they are not very powerful and lack an Operating System. Hence it is difficult to apply high level abstractions and write software that stays close to the design. Task Oriented Programming (TOP) is a paradigm for creating multiuser collaborative systems. A program consists of tasksdescriptions of what needs to be done. The tasks represent the actual work and a task value is observable during execution. Furthermore, tasks can be combined and transformed using combinators. mTask is an embedded Domain Specific Language (eDSL) to program MCUs following the TOP paradigm. Previous work has described the mTask language, a static C code generator, and how to integrate mTask with TOP servers. This paper shows that for dynamic IOT applications, tasks must be sent at runtime to the devices for interpretation. It describes in detail how to compile specialized IOT TOP tasks to bytecode and how to interpret them on devices with very little memory. These additions allow the creation of complete, dynamic IOT applications arising from a single source using a mix of iTasks and mTask tasks. Details such as serialization and communication are captured in simple abstractions. CCS CONCEPTS • Computer systems organization → Distributed architectures; • Software and its engineering → Client-server architectures; Functional languages; Domain specific languages.
Proceedings of the Real World Domain Specific Languages Workshop 2018 on - RWDSL2018
The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These de... more The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These devices have typically very limited computing power and severe memory restrictions to make them cheap and power efficient. These devices can interact with the environment via special sensors and actuators. Since each device controls several peripherals running interleaved, the control software is quite complicated and hard to maintain. Task Oriented Programming, TOP, offers lightweight communicating threads that can inspect each other's intermediate results. This makes it well suited for the IoT. In this paper presents a functional task-based domain specific language for these IoT devices. We show that it yields concise control programs. By restricting the datatypes and using strict evaluation these programs fit within the restrictions of microcontrollers. CCS Concepts • Software and its engineering → Domain specific languages;
Proceedings of the 31st Symposium on Implementation and Application of Functional Languages
Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages
Task Oriented Programming (TOP) is a special flavor of functional programming for real-world appl... more Task Oriented Programming (TOP) is a special flavor of functional programming for real-world application domains in which people and automated systems collaborate to achieve a common goal. The original iTasks framework, which implements TOP, uses a single server multi-client architecture. This is not suited for truly distributed application domains, such as deployed by the Dutch coast guard. In this paper we show how to turn this architecture into a distributed, dynamic, architecture. This is done in an elegant way, by building on the core concepts of TOP and iTasks. CCS CONCEPTS • Software and its engineering → Functional languages; • Computer systems organization → Distributed architectures; • Human-centered computing → Computer supported cooperative work;
Proceedings of the 29th Symposium on Implementation and Application of Functional Programming Languages - IFL 2017, 2017
Lecture Notes in Computer Science, 2016
This paper extends our method to construct a shallow embedded domain specific language, DSL, embe... more This paper extends our method to construct a shallow embedded domain specific language, DSL, embedded in a function programming language. We show how one can add functions and tasks that are typed by the type system of the functional host language. The DSL is clearly separated from its host functional language to facilitate the compilation to small executables in C++. The type system of the host language verifies the types in the DSL, including the types and proper use of variables. The DSL is extendable by new language constructs and interpretations without breaking any existing code. The type system guarantees that everything used in a DSL program is properly defined. We apply these techniques for a DSL to program Arduino microprocessor systems from Clean. The long term goal is to incorporate these microprocessors in the iTask system.
Artificial Neural Networks, 1991
Functional programming languages have been successfully employed to make executable neural networ... more Functional programming languages have been successfully employed to make executable neural network descriptions. For the sake of efficiency, the programs are mixtures between descriptions of the behaviour and the data-flow needed to obtain an efficient algorithm. This has a bad influence on the descriptions' readability. In this paper, we will present a functional description of a neural network which isn't hampered by any efficiency considerations. Our description of a neural network is a mathematical specification of that network. Using an ordinary functional programming language evaluation strategy, our network description has a time complexity which is exponential in the number of learning steps of the network. Using an evaluation strategy which is improved with a memoizing facility, the specification has an almost linear time complexity in the number of learning steps.
Lecture Notes in Computer Science, 2008