Workshop on Generative Technologies 2008 Efficient and Type-Safe Generic Data Storage (2009)
Sjaak Smetsers, Arjen Weelden, Rinus Plasmeijer
In this paper we present an elegant method for sequentializing arbitrary data using the generic language extension of the functional programming language Clean. We show how the proposed operations...
AHA: Amortized Heap Space Usage Analysis – Project Paper – (2009)
Marko Van Eekelen, Olha Shkaravska, Ron Van Kesteren, Bart Jacobs, Erik Poll, Sjaak Smetsers
Abstract: This paper introduces AHA, an NWO-funded2 344K Euro project involving research into an amortized analysis of heap-space usage by functional and imperative programs. Amortized analysis is a...
Steffen Bakel, Sjaak Smetsers, Simon Brock
This paper introduces a notion of partial type assignment on left linear applicative term rewriting systems that is based on the extension defined by Mycroft of Curry’s type assignment system. The...
STRICTNESS ANALYSIS VIA RESOURCE TYPING (2008)
Erik Barendsen, Sjaak Smetsers
Abstract. We present a new typing system for strictness analysis of functional programs. The system extends standard typing (including recursive data types) with strictness annotations and subtyping....
Uniqueness Typing in Natural Deduction Style (2008)
Erik Barendsen, Sjaak Smetse, Erik Barendsen, Sjaak Smetsers
Published in collaboration with the
AHA: Amortized Heap Space Usage Analysis – Project Paper – (2008)
Marko Van Eekelen, Olha Shkaravska, Ron Van Kesteren, Bart Jacobs, Erik Poll, Sjaak Smetsers
This paper introduces AHA, an NWO-funded 1 344K Euro research project involving research into an amortized analysis of heap-space usage by functional and imperative programs. Amortized analysis is a...
Applicative (Functional) Programming (2008)
Artem Alimarine, Sjaak Smetsers, Arjen Weelden, Marko 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...
Polytypic syntax tree operations (2008)
Arjen Van Weelden, Sjaak Smetsers, Rinus Plasmeijer
Abstract. Polytypic functional programming has the advantage that it can derive code for generic functions automatically. However, it is not clear whether it is useful for anything other than the...
Generic Functional Programming (2005)
Artem Alimarine, Sjaak Smetsers
Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any particular...
There and Back Again: Arrows for Invertible Programming (2005)
Artem Alimarine, Sjaak Smetsers, Arjen Van Weelden, Marko 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...
Improved fusion for optimizing generics (2005)
Artem Alimarine, Sjaak Smetsers
Abstract. Generic programming is accepted by the functional programming community as a valuable tool for program development. Several functional languages have adopted the generic scheme of...
AHA Amortized Heap Space Usage Analysis (2005)
Marko Van Eekelen, Bart Jacobs, Erik Poll, Sjaak Smetsers
project involves research into an amortized analysis of heap-space usage by functional and imperative programs. Estimating heap consumption is an active research area since it becomes more and more...
Optimizing generic functions (2004)
Artem Alimarine, Sjaak Smetsers
Abstract. Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any...
Optimizing generic functions (2004)
Artem Alimarine, Sjaak Smetsers
Abstract. Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any...
Diederik Van Arkel, John Van Groningen, Sjaak Smetsers
Abstract. Deforestation was introduced to eliminate intermediate data structures used to connect separate parts of a functional program together. Fusion is a more sophisticated technique, based on a...
Diederik Van Arkel, Sjaak Smetsers
Deforestation was introduced to eliminate intermediate data structures used to connect separate parts of a functional program together.
Diederik Van Arkel, John Van Groningen, Sjaak Smetsers
Abstract. Deforestation was introduced to eliminate intermediate data structures used to connect separate parts of a functional program together. Fusion is a more sophisticated technique, based on a...
Diederik Van Arkel, John Van Groningen, Sjaak Smetsers
Abstract. Deforestation was introduced to eliminate intermediate data structures used to connect separate parts of a functional program together. A more sophisticated technique, called fusion, tries...
Uniqueness Typing for Functional Languages with Graph Rewriting Semantics (1996)
Erik Barendsen, Sjaak Smetsers
This paper is an elaborated version of the work presented in Barendsen and Smetsers (1995a) and Barendsen and Smetsers (1995c). 2. Term graph rewriting
Graph Rewriting Semantics for Functional Programming Languages (1996)
Marko Van Eekelen, Sjaak Smetsers, Rinus Plasmeijer
. The lambda calculus forms without any question *the* theoretical backbone of functional programming languages. For the design and implementation of the lazy functional language Concurrent Clean we...
A Derivation System for Uniqueness Typing (Extended Abstract) (1995)
Erik Barendsen, Sjaak Smetsers
Introduction Traditional functional programming languages are unable to deal with operations with side effects. Indeed, by admitting these operations (such as file manipulations) one risks the loss...
A Derivation System for Uniqueness Typing (1995)
Erik Barendsen, Sjaak Smetsers
We present two systems for first-order typing of graph expressions, in natural deduction style: conventional typing and (polymorphic) uniqueness typing. In both type systems, typing is preserved...
Sjaak Smetsers, Erik Barendsen, Marko Van Eekelen, Rinus Plasmeijer
In this paper we present a type system for graph rewrite systems: uniqueness typing . It employs usage information to deduce whether an object is `unique' at a certain moment, i.e. is only...
Extending Graph Rewriting with Copying (1994)
Erik Barendsen, Sjaak Smetsers
. The notion of term graph rewrite system (TGRS) is extended with a lazy copying mechanism. By analyzing this mechanism, a confluence result is obtained for these so-called copy term graph rewrite...
Uniqueness Typing in Theory and Practice (1994)
Erik Barendsen, Sjaak Smetsers
We present uniqueness typing as an extension of a familiar Curry style typing system for graph rewrite systems. This provides a method for combining purely functional programming with operations...
Conventional and Uniqueness Typing in Graph Rewrite Systems (Extended Abstract) (1993)
Erik Barendsen, Sjaak Smetsers
In this paper we describe a Curry-like type system for graphs and extend it with uniqueness information to indicate that certain objects are only `locally accessible'. The correctness of type...
The Functional Strategy and Transitive Term Rewriting Systems (1993)
Yoshihito Toyama, Sjaak Smetsers, Marko Van Eekelen, Rinus Plasmeijer
The functional strategy has been widely used implicitly (Haskell, Miranda, Lazy ML) and explicitly (Clean) as an efficient, intuitively easy to understand reduction strategy for term (or graph)...
Conventional and Uniqueness Typing in Graph Rewrite Systems (1993)
Erik Barendsen, Sjaak Smetsers
In this paper we describe a Curry-like type system for graphs and extend it with uniqueness information to indicate that certain objects are only `locally accessible'. The correctness of type...
Term Graph Rewriting and Strong Sequentiality (1992)
Abstract This paper propagates the use of term graph rewriting systems as a formal computational model. The definition of both term graphs and the reduction relation on term graphs are more complex...
Steffen Van Bakel, Sjaak Smetsers, Simon Brock
This paper introduces a notion of partial type assignment on left linear applicative term rewriting systems that is based on the extension defined by Mycroft of Curry's type assignment system....
Graph Rewriting and Copying (1992)
Erik Barendsen, Sjaak Smetsers
Graph rewrite systems play an important role in the implementation of functional programming languages. This paper focusses on the theoretical aspects of graph rewriting. Graph reduction is described...
Steffen Van Bakel, Sjaak Smetsers, Simon Brock
This paper introduces a notion of partial type assignment on left linear applicative term rewriting systems that is based on the extension defined by Mycroft of Curry's type assignment system....
Generating Efficient Code for Lazy Functional Languages (1991)
Sjaak Smetsers, Eric Nöcker, John 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...
Eric Nöcker, Sjaak Smetsers, Marko Van Eekelen, Rinus Plasmeijer
Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs...
Efficient Management in the Concrete ABC Machine (1991)
John Van Groningen, Eric Nöcker, Sjaak Smetsers
This paper gives a description of the heap management system used in the implementation of Concurrent Clean. The compilation of Concurrent Clean to concrete target machine code is done with the aid...
Efficient Heap Management in the Concrete ABC Machine (1991)
John Van Groningen, Eric Nöcker, Sjaak Smetsers
This paper gives a description of the heap management system used in the implementation of Concurrent Clean. The compilation of Concurrent Clean to concrete target machine code is done with the aid...