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.
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.
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).
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).
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 |
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 |
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.
Abstract:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
Universiteit van Amsterdam |
Computer Systems Architecture group |
Science Park 904 |
1098XH Amsterdam |
020 / 525 8683 |
c.grelck at uva dot nl |
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 |