[UvA]

[ Nederlands ] [ English ]

22e NL-FP dag 2014

De Nederlandse Functioneel Programmeren dag 2014 vond plaats op vrijdag 10 januari 2014 bij de Universiteit van Amsterdam. Op de NL-FP dag ontmoeten geïnteresseerden in functioneel programmeren elkaar. Gedurende de dag worden een aantal presentaties gehouden over FP-gerelateerde onderzoeksresultaten en over het gebruik van FP in het onderwijs. Daarnaast is er ruime gelegenheid om elkaar te spreken, informatie uit te wisselen, demos te geven en oude bekenden te ontmoeten. De meeste aanwezigen zijn geavanceerde functionele programmeurs, maar beginners zijn natuurlijk ook van harte welkom!

De volgende Nederlandse Functioneel Programmeren dag zal plaats vinden op vrijdag 9 januari 2015 bij de Universiteit Twente.


Inhoud


Aanmelden

Meld je aan bij Clemens Grelck. Graag hoor ik dat je een presentatie wilt geven. Geef dan ook een voorlopige titel aan (dit kan later natuurlijk nog veranderen). Schroom niet om je op te geven, de NL-FP dag is een informele bijeenkomst en ook een prima podium om eigen ervaringen of nieuwe ideeën te delen. Presentatie of geen presentatie, meld je in ieder geval aan (in verband met het reserveren van lunch en koffie).

Let op: Omdat het programma in de tussentijd afgerond is, ben ik niet meer op zoek naar presentaties, maar u mag uw wel nog aanmelden voor de dag.

We moeten een kleine financiele bijdrage van 25EUR vragen voor de catering. A.u.b. contant betalen bij aankomst; we geven natuurlijk ontvangstbewijzen.

Traditiegetrouw wordt er na afloop, op eigen kosten, met een groep gegeten. Geef bij je aanmelding aan of je mee wilt gaan eten. Afhankelijk van het aantal deelnemers kan dan een geschikt restaurant gezocht worden. BELANGRIJK: Als je mee wilt gaan eten geef dat dan uiterlijk mandag 5 januari door.


Locatie

De NL-FP dag vindt plaats in zaal C0.05 in het nieuwe gebouw van de Faculteit Natuurwetenschappen, Wiskunde en Informatica (links onder) op Science Park 904. Deze locatie is heel goed te bereiken per NS trein (station Amsterdam Science Park, rechts onder) en per GVB bus. De sprinters rijden twee keer per uur op het traject Hoofddorp-Schiphol-Centraal-Science Park-Weesp-Amersfoort an op het traject Centraal-Science Park-Weesp-Almere-Zwolle. Bus lijnen 40 en 240 vanaf Amstel station rijden beide een keer per kwartier, lijn 40 vanaf Muiderpoort station ook een keer par kwartier.

Parkeeren is beperkt mogelijk op Science Park maar erg duur (ongeveer 20 EUR voor de hele dag).

[gebouw Science Park 904] [station Amsterdam Science Park]

Diner

Het gezamenlijk diner zal plaats vinden bij de ponteneur. Deze eetcafe/restaurant is weiniger dan 5 minuten loopafstand van station Amsterdam Muiderpoort. De 3-gangen keuze menu is 25.50 plus drankjes. Naar het eind van de wetenschappelijk programma gaan we tezamen van Science Park Amsterdam naar de ponteneur (ongeveer 20 minuten).


Programma

09:30 - 10:15 Aankomst, koffie verkrijgbar bij Cafe Akademisch Kwartier
10:15 - 10:20 Welkom
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 Koffie
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 Drankjes
18:15 - Diner bij de ponteneur

Deelnemers

No Naam Aansluiting Diner Presentatie
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

Presentations

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:

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.


Contact

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

Vorige NL-FP dagen

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: Wed Jan 8 21:04:25 CET 2014