[ Nederlands ] [ English ]

22nd NL-FP Day 2014

The Netherlands Functional Programming Day 2014 took place on Friday, January 10, at the University of Amsterdam. The NL-FP Day is an annual gathering of scientists, students and practitioners who share a common interest in functional (declarative) programming. The day features a string of talks covering the latest advances in research and teaching in the area. Coffee and lunch breaks provide ample opportunity for networking with your colleagues just as for meeting new people. Experts and novices are welcome alike.

The next Netherlands Functional Programming Day will take place on Friday, January 9, 2015 at University of Twente.



Register by email to Clemens Grelck. Please, indicate if you would like to give a presentation. If so, a tentative title would be welcome; of course this could still be changed later. Don't be shy! The NL-FP day is an excellent opportunity to present your ideas in an informal and friendly atmosphere. Presentation or not, register your participation as soon as possible so that we can plan ahead for lunch and coffee breaks.

Note: As the programme has been finalised in the mean time, I'm no longer soliciting proposals for presentations.

The registration fee is 25EUR to cover the cost of catering during the day. Please, pay in cash on arrival; receipts will be issued.

Traditionally, the NL-FP day ends with a joint dinner in a nearby restaurant (at your own cost). Please, indicate upon registration whether or not you would like to join for dinner. The choice of restaurant depends on the size of the group. IMPORTANT: if you intend to join for dinner, let us know by January 5 at the very latest, or we may not be able to accommodate you.


The NL-FP day takes place in lecture hall C0.05 in the new building of the Science Faculty (below left, bulding 904) at Science Park Amsterdam. Science Park Amsterdam can easily be reached by NS train (station Amsterdam Science Park (below right) as well as by GVB bus. The sprinter services Zwolle-Weesp-Amsterdam Centraal and Hoofdorp-Schiphol-Amsterdam Centraal-Weesp-Amersfoort bot run half hourly and create quaterly connections between Amsterdam Centraal and Weesp/Amersfoort. Bus lines 40 and 240 from Amstel station and bus line 40 from Muiderpoort station run quaterly each and connect Science Park to the rest of Amsterdam's public transport system as well as to train services to and from Utrecht and Gouda (via Amstel station).

Limited public parking facilities are available at Science Park, but parking is fairly expensive (expect around 20 EUR for the day).

[Building Science Park 904] [Station Amsterdam Science Park]


The joint dinner will take place at de ponteneur. This eetcafe/restaurant is less than 5 minutes walk from Amsterdam Muiderpoort train station, with frequent connections to Amsterdam Centraal, Utrecht and Amersfoort. At the end of the programme we will jointly walk there (about 20 minutes). The 3-course set dinner with meat, fish and vegetarian options is 25.50 plus drinks.


09:30 - 10:15 Registration, Coffee available in Cafe Akademisch Kwartier
10:15 - 10:20 Welcome and Opening
10:20 - 10:45 Advanced Functional Programming for Fun and Profit
Jose Pedro Magalhaes, Oxford University, UK
[abstract] [slides]
10:45 - 11:10 Imperative and Declarative Views on Software Language Evolution
Vadim Zaytsev, Universiteit van Amsterdam
[abstract] [slides]
11:10 - 11:35 Tonic: Task Oriented Notation Inferred from Code
Jurrien Stutterheim, Radboud Universiteit, Nijmegen
[abstract] [slides]
11:35 - 12:00 Expand: Towards an Extensible Pandoc
Jacco Krijnen, Universiteit Utrecht
[abstract] [slides]
12:00 - 13:00 Lunch
13:00 - 13:25 Calculating Correct Compilers
Patrick Bahr, Copenhagen University, Denmark
[abstract] [slides]
13:25 - 13:50 Structure and Interpretation of Definite Clause Grammars
Peter Kourzanov, TU Delft and NXP
[abstract] [slides]
13:50 - 14:15 Fastest Protein Data Bank Parser on Earth is Written in Haskell
Michal Gajda, Max-Planck Institute for Biophysical Chemistry, Göttingen, Germany
[abstract] [slides]
14:15 - 14:40 Rascal: Functional Programming for Source Code Analysis and Transformation
Tijs van der Storm, CWI, Amsterdam
[abstract] [slides]
14:40 - 15:15 Coffee
15:15 - 15:40 Keeping the PilGRIM at a Steady Pace: Avoiding Pipeline Stalls in a Lazy Functional Processor
Arjan Boeijink, Universiteit Twente
[abstract] [slides]
15:40 - 16:05 Compositional Hardware Virtualization
Raphael Poss, Universiteit van Amsterdam
[abstract] [slides]
16:05 - 16:30 Optimizing Transaction Execution in a Purely Functional Database: Towards Database Maintenance without Downtime
Lesley Wevers, Universiteit Twente
[abstract] [slides]
16:30 - 16:55 Opaleye: an Embedded Relational Query Language for Haskell
Tom Ellis, Purely Agile, Cambridge, UK
[abstract] [slides]
16:55 - 17:00 Closing
17:00 - 17:45 Drinks
18:15 - Dinner at De Ponteneur


No Name Affiliation Dinner Presentation
1 Adam Bergmark Silk, Amsterdam yes no
2 Adrian Haxaire yes no
3 Albert Schrijvers Belastingdienst / CAO, Apeldoorn yes no
4 Alejandro Serrano Universiteit Utrecht yes no
5 Allan van Hulst TU Eindhoven no no
6 Arjan Boeijink Universiteit Twente yes yes
7 Atze Dijkstra Universiteit Utrecht yes no
8 Atze van der Ploeg CWI, Amsterdam yes no
9 Augusto Passalaqua TU Delft no no
10 Bas Lijnse Radboud Universiteit Nijmegen yes no
11 Bastiaan Heeren Open Universiteit yes no
12 Ben Clifford CQX Ltd, Guildford, UK yes no
13 Brechtje Schipper Universiteit van Amsterdam no no
14 Cees van Kemenade Vinzi BV, Utrecht no no
15 Chide Groenouwe Alan Turing Institute, Almere no no
16 Christiaan Baaij Universiteit Twente yes no
17 Clemens Grelck Universiteit van Amsterdam yes no
18 Daniel Salber Mackey.NL no no
19 Doaitse Swierstra Universiteit Utrecht yes no
20 Eduard Lohmann eBay no no
21 Eelco Dolstra LogicBlox yes no
22 Erik Hesselink Silk, Amsterdam yes no
23 Fangyong Tang Universiteit van Amsterdam no no
24 Felix Stegerman no no
25 Henk-Jan van Tuyl Van Tuyl Software no no
26 Henk Versluis Rechtspraak.NL yes no
27 Ignas Vyšniauskas Universiteit van Amsterdam yes no
28 Jacco Krijnen Universiteit Utrecht no yes
29 Jan de Witt yes no
30 Jan Kuper Universiteit Twente yes no
31 Jan Rochel Universiteit Utrecht yes no
32 Jan Terlouw no no
33 Jan Martin Jansen Netherlands Defence Academy no no
34 Jeroen Henrix no no
35 Jesús Ravelo Universidad Simón Bolívar, Caracas, Venezuela no no
36 João Alpium Universiteit Utrecht no no
37 João Paulo Pizani Flor Universiteit Utrecht no no
38 Joeri van Eekelen yes no
39 Johan Jeuring Universiteit Utrecht yes no
40 José Pedro Magalhães Oxford University, UK no yes
41 Jurriën Stutterheim Radboud Universiteit Nijmegen yes yes
42 László Domoszlai Radboud Universiteit Nijmegen yes no
43 Leonard Punt no no
44 Lesley Wevers Universiteit Twente yes yes
45 Maarten Hoogendoorn Vrije Universiteit Amsterdam no no
46 Martijn Bastiaan no no
47 Martijn van Steenbergen Q42, Amsterdam yes no
48 Matthijs Kooijman no no
49 Matthijs Steen Universiteit Utrecht no no
50 Merijn Verstraaten Universiteit van Amsterdam yes no
51 Michal Gajda Max-Planck Institute for Biophysical Chemistry, Göttingen yes yes
52 Mikael Brockman Silk, Amsterdam yes no
53 Miko Kuijn yes no
54 Milan Mulji mMedia Consulting Services no no
55 Motiejus Jakštys no no
56 Nick Rudnick yes no
57 Nick ten Veen no no
58 Patrick Bahr DIKU, Copenhagen University, Denmark yes yes
59 Peter Achten Radboud Universiteit Nijmegen yes no
60 Peter Kourzanov TU Delft / NXP, Eindhoven yes yes
61 Peter Manolescue Vodafone yes no
62 Pieter Koopman Radboud Universiteit Nijmegen yes no
63 Philip Hölzenspiess Universiteit Twente yes no
64 Ralf Lämmel Universität Koblenz-Landau yes no
65 Raphaël Poss Universiteit van Amsterdam yes yes
66 Remy Willems Ortec Finance yes no
67 Rinse Wester Universiteit Twente yes no
68 Rinus Plasmeijer Radboud Universiteit Nijmegen yes no
69 Ruben de Gooijer Distimo, Amsterdam yes no
70 Ruud Koot Universiteit Utrecht yes no
71 Sebastian Altmeyer Universiteit van Amsterdam yes no
72 Sebastiaan Visser Silk, Amsterdam yes no
73 Sjoerd Visscher Q42, Den Haag yes no
74 Sylvain Viollon MindDistrict, Rotterdam no no
75 Stefan Holdermans Vector Fabrics, Eindhoven yes no
76 Steffen Michels Radboud Universiteit, Nijmegen no no
77 Stijn Heldens Universiteit van Amsterdam no no
78 Tijs van der Storm CWI, Amsterdam yes yes
79 Thomas Miedema no no
80 Tim van Deurzen GfK Business Applications, Amstelveen yes no
81 Tom Ellis Purely Agile, Cambridge, UK yes yes
82 Tom Lokhorst Q42, Amsterdam yes no
83 Vadim Zaytsev Universiteit van Amsterdam yes yes
84 Willem Mulder no no
85 Wouter Swierstra Universiteit Utrecht yes no


Jose Pedro Magalhaes: Advanced Functional Programming for Fun and Profit

Abstract: Functional programming, especially when using advanced techniques such as GADTs, type functions, and kind polymorphism, is not only fun; it can also be profitable. In this talk I'll describe my experience in using advanced functional programming in Haskell within Chordify, a web startup that brings chord recognition to the masses.

Vadim Zaytsev: Imperative and Declarative Views on Software Language Evolution

Abstract: Software languages generalise programming languages and allow us to use the same or extended methods on markup languages, DSLs, ADTs, APIs, data schemata, etc. In particular, for many software languages their evolution is an even more important aspect than it is for classic programming languages. By researching software language evolution imperatively, we consider several 'snapshot' instances of language definitions (grammars in a broad sense), which are usually easy to obtain. By looking at software language evolution declaratively, we consider its encoding as grammar transformation steps, which express the evolution intent more precisely. In this talk, you will hear both sides of the story and get an overview of advantages and drawbacks of both.

Jurrien Stutterheim: Tonic: Task Oriented Notation Inferred from Code

Abstract: In this talk we present Tonic, a system for visually gaining insight in iTasks programs’ structure and behaviour. Tonic helps non-programmers to understand iTasks programs by automatically generating a visual representation of a program at compile-time and aims to provide live runtime information while a program is executing.

Jacco Krijnen: Expand: Towards an Extensible Pandoc

Abstract: The Pandoc program is a versatile tool for converting between document formats. It comes with a great variety of readers, each converting a specific input format into the universal Pandoc format, and a great variety of writers, each mapping a document represented in this universal format onto a specific output format. Unfortunately the intermediate Pandoc format is fixed, which implies that a new, unforeseen document element cannot be added. In this paper we propose a more flexible approach, using our collection of Haskell libraries for constructing extensible parsers and attribute grammars. Both the parsing and the unparsing of a specific document can be constructed out of a collection of precompiled descriptions of document elements written in Haskell. This collection can be extended by any user, without having to touch existing code. The Haskell type system is used to enforce that each component is well defined, and to verify that the composition of a collection components is consistent, i.e. that features needed by a component have been defined by that component or any of the other components. In this way we can get back the flexibility e.g. offered by the packages in the LaTeX package eco-system.

Patrick Bahr: Calculating Correct Compilers

Abstract: We present a new approach to the longstanding problem of calculating compilers. In particular, we develop a simple but general recipe that allows us to derive correct compilers from high-level semantics by systematic calculation, with all the required compilation machinery falling naturally out of the calculation process. Our approach is based upon a new application of well-known transformation techniques, and has been applied to calculate compilers for a wide range of language features and their combination, including arithmetic, exceptions, local and global state, various forms of lambda calculi, bounded and unbounded loops, non-determinism, and interrupts.

Peter Kourzanov: Structure and Interpretation of Definite Clause Grammars

Abstract: Definite clause grammars (DCG) is a technique that allows one to embed a parser for a context-sensitive language into logic programming, via Horn clauses. A carefully designed grammar parser can be run forwards, backwards and sideways. In this talk we shall de-construct DCGs using syntax-rules and miniKanren, a library for R5RS Scheme implementing a compact logic-programming system, keeping reversibility in mind. Parsing expression grammars (PEG) is a related technique that like DCG also suffers from the inability to express left-recursive grammars. We make a link between DCGs and PEGs by borrowing the mechanism from DCGs, adding syntactic sugar from PEGs and propose a way to run left-recursive parsers in an on-line fashion. Finally, we re-interpret DCGs as executable, bidirectional DSL specifications and transformations, perhaps better suited for DSL design than R5RS syntax-rules.

Michal Gajda: Fastest Protein Data Bank Parser on Earth is Written in Haskell

Abstract: Protein Data Bank file format is used for the majority of biomolecular data available today. I have written a high level library for processing biomolecular data in this format. The benchmarks indicate that the library is competitive to the other frequently used Protein Data Bank parsing software on a single core, and much faster when used on multicore. It also features a convenient iterator mechanism, and a simple API modeled after BioPython I will also shortly present current status of the BioHaskell effort to build bioinformatic libraries for Haskell.

Tijs van der Storm: Rascal: Functional Programming for Source Code Analysis and Transformation

Abstract: Rascal is a meta programming language developed at CWI. It has been specifically designed for transforming and analyzing source code. This includes applications like static analysis, source code metrics computation, legacy renovation and implementation of domain-specific language compilers, type checkers and IDEs. In this talk I will introduce the language and some its more notable features, including built-in context-free grammars, a wide range of built-in data types, primitives for tree traversal, and powerful constructs for pattern matching. Time permitting I'll demonstrate the language and environment using the example of a simple DSL for state machines.

Arjan Boeijink: Keeping the PilGRIM at a Steady Pace: Avoiding Pipeline Stalls in a Lazy Functional Processor

Abstract: The PilGRIM (Pipelined Graph Reduction Instruction Machine) is a processor design with a high level instruction set specialized for functional languages. With the PilGRIM we attempt to exploit the potential of modern hardware architecture to minimize the overhead of executing functional languages. Execution of lazy functional programs is both memory and control flow intensive, which makes it challenging to keep a deep pipeline filled with useful work. This talk will introduce the core ideas of the PilGRIM design, and show how the high level instruction set and extra runtime information can be used to avoid many pipeline stalls.

Raphael Poss: Compositional Hardware Virtualization

Abstract: Abstractions that hide hardware away from programming are useful in that they allow the programmer to concentrate on "more important" tasks, such as decomposing problems, expressing them in exact semantics, and proving that implementation matches specification. Nevertheless the syntactic variance problem still exists: in any functional language, there are multiple ways to write the same function which cannot be automatically optimized from one to another. One of them will be "better" for extra-functional reasons, more often than not performance and efficiency. But how to determine this? In this talk, I will propose that compositional hardware virtualization, a notion I will describe, is a fundamental building block of the operational intuition that functional programmers unconsciously use when choosing between different candidate function implementations.

Lesley Wevers: Optimizing Transaction Execution in a Purely Functional Database: Towards Database Maintenance without Downtime

Abstract: Current database systems needs to be taken offline to perform major changes. This is of course not acceptable for applications that need to be available at all times. We are developing a new kind of database system based on functional languages, where we use techniques such as laziness and memoization to optimize database transactions in ways not possible in traditional database systems. Using these techniques, we want to make it possible to perform database maintenance without downtime.

Tom Ellis: Opaleye: an Embedded Relational Query Language for Haskell

Abstract: Opaleye is a relational query language embedded domain specific language for Haskell, which compiles to SQL and can run against a PostgreSQL database server. It has some similarity to HaskellDB, but is based on a firm theory derived from category theoretical principles, and therefore avoids bugs that HaskellDB suffers. I will give a brief introduction to the library and the technology behind it.


Clemens Grelck
University of Amsterdam
Computer Systems Architecture group
Science Park 904
1098XH Amsterdam
020 / 525 8683
c.grelck at uva dot nl

Previous NL-FP Days

2013 Radboud Universiteit Nijmegen
2012 Universiteit Utrecht
2011 Universiteit Twente, Enschede
2010 Radboud Universiteit Nijmegen
2009 Technische Universiteit Eindhoven
2008 Open Universiteit, Utrecht
2007 Marine, Amsterdam
2006 Hogeschool Avans, Breda
2005 Rijksuniversiteit Groningen
2004 Universiteit Twente, Enschede
2003 Universiteit Utrecht
2002 Katholieke Universiteit Nijmegen
2001 Technische Universiteit Delft
2000 Technische Universiteit Eindhoven
1999 Hogeschool Breda
1998 RijksUniversiteit Leiden
1997 Hogeschool Leeuwarden
1996 Universiteit van Amsterdam
1995 Technische Universiteit Twente, Enschede
1994 Rijksuniversiteit Utrecht
1993 Katholieke Universiteit Nijmegen

Valid HTML 4.01!     Valid CSS!             Dr Clemens Grelck
Last modified: Tue Jan 14 12:51:47 CET 2014