A Lightweight Approach to Datatype-Generic Rewriting (2009)
Thomas Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren
Previous implementations of generic rewriting libraries have a number of limitations: they require the user to either adapt the datatype on which rewriting is applied, or the rewriting rules are...
Comparing Libraries for Generic Programming in Haskell (2009)
Alexey Rodriguez, Johan Jeuring, Patrik Jansson, Alex Gerdes, Alexey Rodriguez, ...
Datatype-generic programming is defining functions that depend on the structure, or “shape”, of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in...
1 Summary STEL — Software Technology for ELearning (2008)
his or her solutions, and uses the feedback to make progress in his or her learning. Learning differs from individual to individual, something that is difficult for one student might be easy for...
Applications of Grammars (2008)
Grammars are an important tool for describing languages. The course on Languages and Parsing gives many examples of grammars. The applications that have been used to introduce the different kinds of...
Abstract Generic Views on Data Types (2008)
Stefan Holdermans, Johan Jeuring, Andres Löh
A generic function is defined by induction on the structure of types. The structure of a data type can be defined in several ways. For example, in PolyP a pattern functor gives the structure of a...
Haskell into a web application – An experience report (2008)
Sylvia Stuurman, Johan Jeuring
Turning an interactive tool implemented in
Customizing an XML–Haskell data binding with type isomorphism inference in Generic Haskell (2008)
Frank Atanassow, Johan Jeuring, Frank Atanassow, Johan Jeuring
Customizing an XML–Haskell data binding
Testing properties of generic functions (2008)
Patrik Jansson, Johan Jeuring, L. Cabenda, G. Engels, J. Kleerekoper, S. Mak, ...
Abstract A datatype-generic function is a family of functions indexed by (the structure of) a type. Examples of generic functions are equality tests, maps and pretty printers. QuickCheck is one of...
XML wordt in veel situaties gebruikt, en voor dat gebruik worden talloze tools gebouwd. Er zijn verschillende manieren om XML-tools te ontwikkelen, en dit artikel behandelt de voor- en nadelen van de...
Testing properties of generic functions (2008)
Patrik Jansson, Johan Jeuring, Patrik Jansson, Johan Jeuring, Michiel Overeem, Kees Visser
www.cs.uu.nl
Datatype-Generic Programming 2006 (2008)
Ralf Hinze, Johan Jeuring, Andres Löh, Ralf Hinze, Johan Jeuring, Andres Löh
www.cs.uu.nl
Morph Endo! Report on the Tenth Interstellar Contest on Fuun Programming (2008)
Eelco Dolstra, Jur Hage, Bastiaan Heeren, Stefan Holdermans, Johan Jeuring, Andres Löh, ...
Chapter 2 Comparing Approaches to Generic Programming in Haskell (2008)
Ralf Hinze, Johan Jeuring, Andres Löh
Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Functorial ML, ‘Scrap Your Boilerplate’, Generic Haskell, ‘Generics for the Masses’, and so...
Xprez: A Declarative Presentation Language for XML (2008)
Martijn M. Schrage, Johan Jeuring
Abstract. Proxima is a generic presentation-oriented XML editor with support for derived values appearing in the documents. Xprez is the presentation language for the Proxima editor. It is a...
Generic validation in an XPath-Haskell data binding (2008)
Rui Guerra, Johan Jeuring, S. Doaitse Swierstra
An XPath data binding for a given host language provides a translation of XPath expressions to expressions in the host language. This paper discusses an XPathHaskell data binding. XPath validation...
Xprez: A Declarative Presentation Language for (2008)
Xml Martijn Schrage, Martijn M. Schrage, Johan Jeuring
Proxima is a generic presentation-oriented XML editor with support for derived values appearing in the documents. Xprez is the presentation language for the Proxima editor. It is a declarative...
Specifying strategies for exercises (2008)
Bastiaan Heeren, Johan Jeuring, Arthur Van Leeuwen, Alex Gerdes, Bastiaan Heeren, Johan Jeuring, ...
Abstract. The feedback given by e-learning tools that support incrementally solving problems in mathematics, logic, physics, etc. is limited, or laborious to specify. In this paper we introduce a...
Generic programming with fixed points for mutually (2008)
Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring, Alexey Rodriguez, Stefan Holdermans, ...
recursive datatypes
The Generic H A SKELL Team (2008)
Andres Löh, Johan Jeuring, Thomas Van Noort, Alexey Rodriguez, Dave Clarke, Ralf Hinze, ...
www.cs.uu.nl
A Lightweight Approach to Datatype-Generic Rewriting (2008)
Thomas Van Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren, Thomas Noort, ...
Feedback Services for Exercise Assistants (2008)
Alex Gerdes, Bastiaan Heeren, Johan Jeuring, Sylvia Stuurman, Alex Gerdes, Bastiaan Heeren, ...
Immediate feedback has a positive effect on the performance of a student practising a procedural skill in exercises. Giving feedback to a number of students is labour-intensive for a teacher. To...
Incremental Data Compression (Extended Abstract) (2007)
this paper can be used in the construction of an algorithm for coding a tree with respect to a dictionary of trees. This paper is organised as follows. Section 2 describes the edit model and the...
Incremental Data Compression (Extended Abstract) (2007)
this paper can be used in the construction of an algorithm for coding a tree with respect to a dictionary of trees. This paper is organised as follows. Section 2 describes the edit model and the...
The Generic H A SKELL User’s Guide Version 1.23 — Beryl release The Generic H A (2007)
Dave Clarke, Dæv Clarke, Johan Jeuring, Johan Jeuring, Andres Löh, Andres Löh
www.cs.uu.nl
Dæv Clarke, Johan Jeuring, Andres Löh, Skell Team
1.1 Generic programming............................. 4
Dæv Clarke, Ralf Hinze, Johan Jeuring, Andres Löh, Skell Team
1.1 Generic programming............................. 4
Polytypic data conversion programs (2007)
Several generic programs for converting values from regular datatypes to some other format, together with their corresponding inverses, are constructed. Among the formats considered are shape plus...
(e-mail: johanjcs.uu.nl) Just a little bit of it can bring you up and down.-- Genesis, it 1
www.cs.uu.nl Combinators for layered software architectures (2007)
Martijn M. Schrage, Martijn M. Schrage, Johan Jeuring, Johan Jeuring, Doaitse Swierstra, Doaitse Swierstra
We define a domain specific embedded language in Haskell to describe layered software architectures of editors. By using a typed programming language to describe the architecture, the type...
Advanced Functional Programming Examination Problem (2007)
Magnus Carlsson, Erik Meijer, Johan Jeuring
This course is being assessed by an unusual form of examination: a practical exercise. The object of the exercise is to show that you have learned to use lazy functional programming as a practical...
A polytypic function is a function that can be instantiated on many data types to obtain data type specic functionality. Examples of polytypic functions are the functions that can be derived in...
Pure Type Systems for Functional Programming [Extended Abstract] (2007)
Jan-willem Roorda, Johan Jeuring
We present a functional programming language based on Pure Type Systems (PTSs). We show how we can define such a language by extending the PTS framework with algebraic data types, case expressions...
Introduction Suppose, you want to implement a structured editor for some term type, so that the user can navigate through a given term and perform edit actions on subterms. In this case you are...
Martijn M. Schrage, Martijn M. Schrage, Johan Jeuring, Johan Jeuring, Doaitse Swierstra, Doaitse Swierstra
www.cs.uu.nl
Advanced programming concepts in a course on grammars and parsing (2007)
Johan Jeuring, Doaitse Swierstra
One of the important goals of the Computer Science curriculum programming concepts such as, for example, partial evaluation and deforestation. A course on grammars and parsing offers excellent...
A generic framework for developing exercise assistants (2007)
Johan Jeuring, Johan Jeuring, Harrie Passier, Harrie Passier, Sylvia Stuurman, Sylvia Stuurman
We are developing several exercise assistants which give very good feedback. To develop an exercise assistant, we need three components: a domain description, rules for reasoning about the domain,...
Strategy feedback in an e-learning tool for mathematical exercises (2007)
Johan Jeuring, Johan Jeuring, Wouter Pasman, Wouter Pasman
Abstract Exercises in mathematics are often solved using a standard procedure, such as for example solving a system of linear equations by subtracting equations from top to bottom, and then...
Generic views on data types (2006)
Stefan Holdermans, Johan Jeuring, Andres Löh, Alexey Rodriguez
Abstract. A generic function is defined by induction on the structure of types. The structure of a data type can be defined in several ways. For example, in PolyP a pattern functor gives the...
Haskell Communities and Activities Report (2006)
Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Dmitry Astapov, ...
This is the tenth edition of the Haskell Communities and Activities Report (HCAR) – a collection of entries about everything that is going on and related to Haskell in some way that appears twice a...
Typed contracts for functional programming (2006)
Ralf Hinze, Johan Jeuring, Andres Löh
Abstract. A robust software component fulfills a contract: it expects data satisfying a certain property and promises to return data satisfying another property. The object-oriented community uses...
Generic views on data types (2006)
Stefan Holdermans, Stefan Holdermans, Johan Jeuring, Johan Jeuring, Andres Löh, Andres Löh, ...
Abstract. A generic function is defined by induction on the structure of types. The structure of a data type can be defined in several ways. For example, in PolyP a pattern functor gives the...
Generic views on data types (2006)
Stefan Holdermans, Stefan Holdermans, Johan Jeuring, Johan Jeuring, Andres Löh, Andres Löh
www.cs.uu.nl
Comparing approaches to generic programming in Haskell (2006)
Ralf Hinze, Johan Jeuring, Andres Löh
Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Functorial ML, ‘Scrap Your Boilerplate’, Generic Haskell, ‘Generics for the Masses’, etc. The...
Feedback in an interactive equation solver (2006)
Harrie Passier, Harrie Passier, Johan Jeuring, Johan Jeuring, Heerlen The Netherlands
www.cs.uu.nl
An interactive tool for manipulating (2006)
Josje Lodder, Johan Jeuring, Harrie Passier, Josje Lodder, Johan Jeuring, Harrie Passier
logical formulae
The Generic H A SKELL Team (2006)
Andres Löh, Johan Jeuring, Alexey Rodriguez (editors, Andres Löh (editor, Johan Jeuring (editor, Alexey Rodriguez (editor, ...
www.cs.uu.nl
Typed contracts for functional programming (2006)
Ralf Hinze, Ralf Hinze, Johan Jeuring, Johan Jeuring, Andres Löh, Andres Löh
Abstract. A robust software component fulfills a contract: it expects data satisfying a certain property and promises to return data satisfying another property. The object-oriented community uses...
Type inference for generic Haskell (2005)
Alexey Rodriguez, Johan Jeuring, Andres Löh
Abstract. The more expressive a type system, the more type information has to be provided in a program. Having to provide a type is sometimes a pain, but lacking expressivity is often even worse....
The Generic Haskell User's Guide - Version 1.42 - Coral release (2005)
Andres Löh, Johan Jeuring, Andres Löh (editor, Johan Jeuring (editor, Dave Clarke, Jan De Wit, ...
Contents SKELL? 5 1.1 Generic programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 SKELL overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Installation 6 2.1...
Frank Atanassow, Johan Jeuring
this paper we show how to infer such conversions automatically
Type inference for generic Haskell (2005)
Alexey Rodriguez, Johan Jeuring, Andres Löh, Alexey Rodriguez, Johan Jeuring, Andres Löh
Abstract. The more expressive a type system, the more type information has to be provided in a program. Having to provide a type is sometimes a pain, but lacking expressivity is often even worse....
Haskell Communities and Activities Report (2005)
Andres Löh (ed, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, Alistair Bayley, ...
Finally, here is the 9th edition of the Haskell Communities and Activities Report (HCAR), almost three weeks after the submission deadline. This delay is entirely my own fault. In fact, I have to...
Haskell Communities and Activities Report (2005)
Andres Löh (ed, Perry Alexander, Lloyd Allison, Tiago Miguel, Laureano Alves, Krasimir Angelov, ...
You are reading the 8th edition of the Haskell Communities and Activities Report (HCAR). These are interesting times to be a Haskell enthusiast. Everyone seems to be talking about darcs ( → 6.3)...
Haskell Communities and Activities Report (2004)
Andres Löh (ed, Perry Alexander, Lloyd Allison, Krasimir Angelov, Alistair Bayley, Jérémy Bobbio, ...
Welcome to the Seventh edition of the Haskell Communities and Activities report. I can proudly announce that the report has survived yet another change of editor, and chances are good that this...
Inferring type isomorphisms generically (2004)
Frank Atanassow, Johan Jeuring
Abstract. Datatypes which differ inessentially in their names and structure are said to be isomorphic; for example, a ternary product is isomorphic to a nested pair of binary products. In some...
UUXML: A Type-Preserving XML Schema-Haskell Data Binding (2004)
Frank Atanassow, Dave Clarke, Johan Jeuring
An XML data binding is a translation of XML documents into values of some programming language. This paper discusses a type-preserving XML-Haskell data binding that handles documents typed by the W3C...
Ontology Based Feedback Generation in Design-Oriented Learning Systems (2004)
One of the essential elements needed for effective learning is feedback. Feedback can be given to learners during learning but also to authors during course development. In the current generation of...
Scripting XML with Generic Haskell (2003)
Frank Atanassow, Dave Clarke, Johan Jeuring
Abstract. A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic...
www.cs.uu.nl Scripting XML with Generic Haskell (2003)
Frank Atanassow, Dave Clarke, Johan Jeuring, Frank Atanassow, Dave Clarke, Johan Jeuring
A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic programming. This...
Generic Haskell: applications (2003)
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes discuss three advanced generic programming applications: generic...
Exploring Generic Haskell (2003)
Andres Löh, Andres Löh, Dave Clarke, Dave Clarke, Johan Jeuring, Johan Jeuring
Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a...
Scripting XML with Generic Haskell (2003)
Frank Atanassow, Frank Atanassow, Dave Clarke, Dave Clarke, Johan Jeuring, Johan Jeuring
A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic programming. This...
XPREZ: A Declarative Presentation Language for XML (2003)
Martijn M. Schrage, Johan Jeuring
Proxima is a generic presentation-oriented XML editor with support for derived values appearing in the documents. Xprez is the presentation language for the Proxima editor. It is a declarative...
Dependency-style Generic Haskell (2003)
Andres Loh, Andres Löh, Dave Clarke, Johan Jeuring
Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a...
Generic Haskell: Applications (2003)
Generic Haskell is an extension of Haskell that supports the construction of generic programs. This article describes generic programming in practice. It discusses three advanced generic programming...
Generic Haskell: practice and theory (2003)
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes describe the basic constructs of Generic Haskell and highlight the...
Generic Haskell: Practice and Theory (2003)
Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes describe the basic constructs of Generic Haskell and highlight the underlying theory.
Generic Haskell: Practice and Theory (2003)
Generic Haskell is an extension of Haskell that supports the construction of generic programs. This article describes the basics of Generic Haskell and highlights the underlying theory.
Type-indexed data types (2002)
A polytypic function is a function that can be instantiated on many data types to obtain data type specific functionality. Examples of polytypic functions are the functions that can be derived in...
Improving type-error messages in functional languages (2002)
Bastiaan Heeren, Johan Jeuring, Doaitse Swierstra, Pablo Azero Alcocer
Although type systems do detect type errors in programs, they often produce uninformative error messages, that hardly give information about how to repair a program. One important shortcoming is the...
Generic Programming for XML Tools (2002)
A generic program is written once, and works on values of a large class of data types (or DTD’s, schemas, structures, class hierarchies). This paper shows how generic programming can be used to...
Type-indexed data types (2002)
Ralf Hinze, Johan Jeuring, Andres Löh
Abstract. A polytypic function is a function that can be instantiated on many data types to obtain data type specific functionality. Examples of polytypic functions are the functions that can be...
Improving type-error messages in functional languages (2002)
Bastiaan Heeren, Johan Jeuring, Doaitse Swierstra, Pablo Azero Alcocer
Although type systems do detect type errors in programs, they often produce uninformative error messages, that hardly give information about how to repair a program. One important shortcoming is the...
www.cs.uu.nl Combinators for layered software architectures (2002)
Martijn M. Schrage, Johan Jeuring, Doaitse Swierstra, Martijn M. Schrage, Johan Jeuring, Doaitse Swierstra
We define a domain specific embedded language in Haskell to describe layered software architectures of editors. By using a typed programming language to describe the architecture, the type...
The Web (Functional Pearl) (2001)
Introduction Say, you want to implement a structured editor for some term type, so that the user can navigate through a given term and perform edit actions on subterms. In this case you are...
Type-Indexed Data Types (2001)
Ralf Hinze Johan, Johan Jeuring, Andres Löh
A polytypic function is a function that can be instantiated on many data types to obtain data type specific functionality. Examples of polytypic functions are the functions that can be derived in...
A framework for polytypic programming on terms, with an application to rewriting (2000)
Given any value of a datatype (an algebra of terms), and rules to rewrite values of that datatype, we want a function that rewrites the value to normal form if the value is normalizable. This paper...
Polytypic Data Conversion Programs (2000)
Several generic programs for converting values from regular datatypes to some other format, together with their corresponding inverses, are constructed. Among the formats considered are shape plus...
Polytypic compact printing and parsing (1999)
Abstract. A generic compact printer and a corresponding parser are constructed. These programs transform values of any regular datatype to and from a bit stream. The algorithms are constructed along...
Generic Haskell: A Language for Generic Programming (NWO-EW Proposal) (1999)
pplicable extension of Haskell! 3 Classication Software engineering: Specication Methods (3.2), Program Construction Methods (3.3), Program Development Tools (3.6). 1 4 Composition of the Research...
Advanced Programming Concepts in a Course on Grammars and Parsing (1999)
Johan Jeuring, Doaitse Swierstra
One of the important goals of the Computer Science curriculum at Utrecht University is to familiarize students with abstract programming concepts such as, for example, partial evaluation and...
Polytypic Compact Printing and Parsing (1999)
. A generic compact printer and a corresponding parser are constructed. These programs transform values of any regular datatype to and from a bit stream. The algorithms are constructed along with a...
FUNCTIONAL PEARLS - Polytypic Unification (1998)
Unification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and...
Polylib --- a library of polytypic functions (1998)
A polytypic program is a program that behaves uniformly over a large class of datatypes. For functional polytypic programming this uniformity is achieved by parameterising functions over type...
Functional Pearls: Polytypic Unification (1998)
Unification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and...
PolyLib - a library of polytypic functions (1998)
This paper describes the polytypic functions in PolyLib, motivates their presence in the library, and gives a rationale for their design. Thus we hope to share our experience with other researchers...
PolyP - a polytypic programming language extension (1997)
Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are...
Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are...
Polytypic Data Compression (1996)
Introduction A large part of the data sent over the internet is (semi-) structured, examples are databases, html files, and javaScript programs. And a recent future-scenario about the internet...
Polytypic Pattern Matching (1995)
The (exact) pattern matching problem can be informally specified as follows: given a pattern and a text, find all occurrences of the pattern in the text. The pattern and the text may both be lists,...
Constructing Functional Programs for Grammar Analysis Problems (1995)
Johan Jeuring, Doaitse Swierstra
This paper discusses the derivation of functional programs for grammar analysis problems, such as the Empty problem and the Reachable problem. Grammar analysis problems can be divided into two...
Merging Monads and Folds for Functional Programming (1995)
. These notes discuss the simultaneous use of generalised fold operators and monads to structure functional programs. Generalised fold operators structure programs after the decomposition of the...
Bottom-up grammar analysis - a functional formulation (1994)
Johan Jeuring, Johan Jeuring, Johan Jeuring, Doaitse Swierstra, Doaitse Swierstra, Doaitse Swierstra
This paper discusses bottom-up grammar analysis problems such as the Empty problem and the First problem. It defines a general class of bottom-up grammar analysis problems, and from this definition...
A Translation from Attribute Grammars to Catamorphisms (1994)
Maarten Fokkinga, Johan Jeuring, Lambert Meertens, Erik Meijer
G has a simple form, so that the actual translation can be formulated without too many indices and the like. 1 . The context free grammar G determines a functor F . . Lemma T is a subset of the...
Bottom-up Grammar Analysis - A Functional Formulation (1994)
Johan Jeuring, Doaitse Swierstra
This paper discusses bottom-up grammar analysis problems such as the Empty problem and the First problem. It defines a general class of bottomup grammar analysis problems, and from this definition it...
The derivation of on-line algorithms, with an application to finding palindromes (1994)
Abstract. A theory for the derivation of on-line algorithms is presented. The algorithms are derived in the Bird-Meertens calculus for program transformations. This calculus provides a concise...
Polytypic Unification, Patrik Jansson, Johan Jeuring
Unification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and...
The Derivation of a Hierarchy of Algorithms for Pattern Matching on Arrays (1992)
This paper derives a hierarchy of algorithms for pattern matching on arrays in the Bird-Meertens calculus for program transformation. In this calculus, both specifications and algorithms are...
Incremental Algorithms on Lists (1991)
Incremental computations can improve the performance of interactive programs such as spreadsheet programs, program development environments, text editors, etc. Incremental algorithms describe how to...
Algorithms from theorems (1990)
In this paper we show how algorithms are derived from their specification in the Bird-Meertens form,dl,m. The Bird-Meertens formalism is a programming methodology which provides a concise functional...
A Translation from Attribute Grammars to (1990)
Maarten Fokkinga, Johan Jeuring, Lambert Meertens, Erik Meijer
Let AG be an attribute grammar, with underlying context free grammar G and attribute evaluation rules A. The function that decorates —according to A — a parse tree with attribute values and then...
Functional Pearl: Polytypic Unification
Patrik Jansson And Johan Jeuring, Patrik Jansson, Johan Jeuring
Unification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and...