Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Rinus Plasmeijer is active.

Publication


Featured researches published by Rinus Plasmeijer.


Journal of Functional Programming | 1995

The ins and outs of Clean I/O

Peter Achten; Rinus Plasmeijer

Functional programming languages have banned assignment because of its undesirable properties. The reward of this rigorous decision is that functional programming languages are side-effect free. There is another side to the coin: because assignment plays a crucial role in Input/Output (I/O), functional languages have a hard time dealing with I/O. Func tional programming languages have therefore often been stigmatised as inferior to imperative programming languages because they cannot deal with I/O very well. In this paper we show that I/O can be incorporated in a functional programming language without loss of any of the generally accepted advantages of functional programming languages. This discussion is supported by an extensive ac count of the I/O system offered by the lazy, purely functional programming language Clean. Two aspects that are paramount in its I/O system make the approach novel with respect to other approaches. These aspects are the technique of explicit multiple environment passing , and the Event I/O framework to program Graphical User I/O in a highly struc t red and high-level way. Clean file I/O is as powerful and flexible as it is in common imperative languages (one can read, write, and seek directly in a file). Clean Event I/O provides pro grammers with a high-level frame work to specify complex Graphical User I/O. It has been used to write applications such as a window-based text editor, an object based drawing program, a relational database, and a spreadsheet program. These graphical interactive programs are com pl tely machine independent, but still obey the look-and-feel of the concrete win dow environment being used. The specifications are completely functional and make extensive use of uniqueness typing, higher-order functions, and alge braic data types. Efficient implementations are present on the Macintosh, Sun (X Windows under Open Look), and PC (OS/2).


international conference on functional programming | 2007

iTasks: executable specifications of interactive work flow systems for the web

Rinus Plasmeijer; Peter Achten; Pieter W. M. Koopman

In this paper we introduce the iTask system: a set of combinators to specify work flows in a pure functional language at a very high level of abstraction. Work flow systems are automated systems in which tasks are coordinated that have to be executed by humans and computers. The combinators that we propose support work flow patterns commonly found in commercial work flow systems. Compared with most of these commercial systems, the iTask system offers several advantages: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, dynamic and recursive work flows can be specified, and last but not least, the specification is used to generate an executable web-based multi-user work flow application. With the iTask system, useful work flows can be defined which cannot be expressed in other systems: work can be interrupted and subsequently directed to other workers for further processing. The implementation is special as well. It is based on the Clean iData toolkit which makes it possible to create fully dynamic, interactive, thin client web applications. Thanks to the generic programming techniques used in the iData toolkit, the programming effort is reduced significantly: state handling, form rendering, user interaction, and storage management is handled automatically. The iTask system allows a task to be regarded as a special kind of persistent redex being reduced by the application user via task completion. The combinators control the order in which these redexes are made available to the application user. The system rewrites the persistent task redexes in a similar way as functions are rewritten in lazy functional languages.


international symposium on functional and logic programming | 2006

iData for the world wide web – programming interconnected web forms

Rinus Plasmeijer; Peter Achten

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.


Archive | 2006

Central European Functional Programming School

David Hutchison; Takeo Kanade; Josef Kittler; Jon M. Kleinberg; Friedemann Mattern; John C. Mitchell; Moni Naor; Oscar Nierstrasz; C. Pandu Rangan; Bernhard Steffen; Madhu Sudan; Demetri Terzopoulos; Doug Tygar; Moshe Y. Vardi; Gerhard Weikum; Zoltán Horváth; Rinus Plasmeijer; Anna Soós; Viktória Zsók

Domain-specific languages are a popular application area for functional programming; and conversely, functional programming is a popular implementation vehicle for domain-specific languages—at least, for embedded ones. Why is this? The appeal of embedded domain-specific languages is greatly enhanced by the presence of convenient lightweight tools for defining, implementing, and optimising new languages; such tools represent one of functional programming’s strengths. In these lectures we discuss functional programming techniques for embedded domainspecific languages; we focus especially on algebraic datatypes and higherorder functions, and their influence on deep and shallow embeddings.


international conference on functional programming | 1991

Generating efficient code for lazy functional languages

Sjaak Smetsers; Eric Nöcker; John H. G. van Groningen; Rinus Plasmeijer

In this paper we will discuss how a good code generator can be built for (lazy) functional languages. Starting from Concurrent Clean, an experimental lazy functional programming language, code is generated for an intermediate abstract machine: the ABC machine. In this first pass many well-known optimisation techniques are included. However, we will also present some new ideas in this area, like the way in which strictness can be incorporated, and the implementation of higher order functions. In a second pass, the ABC code is translated to concrete target code for the Motorola MC680x0 processor. Again many optimisation methods appear to be applicable. Some of them (for example register allocation algorithms) are common for the implementation of other types of languages, but have to be adapted because of the specific properties of both source language and target machine. Other optimisations are specific for lazy functional languages, e.g. the implementation of higher order functions, efficient memory management and the optimised graph reduction. Measurements demonstrate that due to the optimisations of both passes very fast code can be generated. We have compared Concurrent Clean with two other functional languages, namely Lml and Hope, and also with the imperative language C. With respect to both functional languages this comparison clearly goes in favour of Concurrent Clean. Furthermore, we can conclude that, when using the presented compilation techniques, a lazy functional language is able to compete even with an imperative language such as C.


implementation and application of functional languages | 2002

GAST: generic automated software testing

Pieter W. M. Koopman; Artem Alimarine; Jan Tretmans; Rinus Plasmeijer

Software testing is a labor-intensive, and hence expensive, yet heavily used technique to control quality. In this paper we introduce GAST, a fully automatic test tool. Properties about functions and datatypes can be expressed in first order logic. GAST automatically and systematically generates appropriate test data, evaluates the property for these values, and analyzes the test results. This makes it easier and cheaper to test software components. The distinguishing property of our system is that the test data are generated in a systematic and generic way using generic programming techniques. This implies that there is no need for the user to indicate how data should be generated. Moreover, duplicated tests are avoided, and for finite domains GAST is able to prove a property by testing it for all possible values. As an important side-effect, it also encourages stating formal properties of the software.


implementation and application of functional languages | 2008

Uniqueness Typing Simplified

Edsko de Vries; Rinus Plasmeijer; David M. Abrahamson

We present a uniqueness type system that is simpler than both Cleans uniqueness system and a system we proposed previously. The new type system is straightforward to implement and add to existing compilers, and can easily be extended with advanced features such as higher rank types and impredicativity. We describe our implementation in Morrow, an experimental functional language with both these features. Finally, we prove soundness of the core type system with respect to the call-by-need lambda calculus.


symposium/workshop on haskell | 2005

There and back again: arrows for invertible programming

Artem Alimarine; Sjaak Smetsers; Arjen van Weelden; Marko C. J. D. van Eekelen; Rinus Plasmeijer

Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (bi-arrows). The bi-arrow class is an extension of Haskells arrow class with an extra combinator that changes the direction of computation.The advantage of the use of bi-arrows for invertible programming is the preservation of invertibility properties using the bi-arrow combinators. Programming with bi-arrows in a polytypic or generic way exploits this the most. Besides bidirectional polytypic examples, including invertible serialization, we give the definition of a monadic bi-arrow transformer, which we use to construct a bidirectional parser/pretty printer.


Science of The Total Environment | 2010

Eco-SpaCE: An object-oriented, spatially explicit model to assess the risk of multiple environmental stressors on terrestrial vertebrate populations

Mark Loos; A.M.J. Ragas; Rinus Plasmeijer; A.M. Schipper; A.J. Hendriks

Wildlife organisms are exposed to a combination of chemical, biological and physical stressors. Information about the relative impact of each stressor can support management decisions, e.g., by the allocation of resources to counteract those stressors that cause most harm. The present paper introduces Eco-SpaCE; a novel receptor-oriented cumulative exposure model for wildlife species that includes relevant ecological processes such as spatial habitat variation, food web relations, predation, and life history. A case study is presented in which the predicted mortality due to cadmium contamination is compared with the predicted mortality due to flooding, starvation, and predation for three small mammal species (Wood mouse, Common vole, and European mole) and a predator (Little owl) living in a lowland floodplain along the river Rhine in The Netherlands. Results indicated that cadmium is the principal stressor for European mole and Little owl populations. Wood mouse and Common vole population densities were mainly influenced by flooding and food availability. Their estimated population sizes were consistent with numbers reported in literature. Predictions for cadmium accumulation and flooding stress were in agreement with field data. The large uncertainty around cadmium toxicity for wildlife leads to the conclusion that more species-specific ecotoxicological data is required for more realistic risk assessments. The predictions for starvation were subject to the limited quantitative information on biomass obtainable as food for vertebrates. It is concluded that the modelling approach employed in Eco-SpaCE, combining ecology with ecotoxicology, provides a viable option to explore the relative contribution of contamination to the overall stress in an ecosystem. This can help environmental managers to prioritize management options, and to reduce local risks.


practical aspects of declarative languages | 2004

Compositional Model-Views with Generic Graphical User Interfaces

Peter Achten; Marko C. J. D. van Eekelen; Rinus Plasmeijer

Creating GUI programs is hard even for prototyping purposes. Using the model-view paradigm makes it somewhat simpler since the model-view paradigm dictates that the model contains no GUI programming, as this is done by the views. Still, a lot of GUI programming is needed to implement the views.

Collaboration


Dive into the Rinus Plasmeijer's collaboration.

Researchain Logo
Decentralizing Knowledge