https://wiki.clean.cs.ru.nl/api.php?action=feedcontributions&user=Markus+Klinik&feedformat=atomClean - User contributions [en]2024-03-19T02:50:58ZUser contributionsMediaWiki 1.35.5https://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1390NL-FP dag 20172017-01-09T10:21:45Z<p>Markus Klinik: /* Contact */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to Markus Klinik including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 [[:File:2017-FP-Dag-TDD-Sessions.pdf|Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris]]<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Hendrik Folmer - SLAM on FPGA using CλaSH<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Hendrik Folmer - SLAM on FPGA using CλaSH ====<br />
<br />
SLAM stands for simultaneous localization and mapping and is a mathematical<br />
problem in robotics with a potentially heavy computational load which is<br />
usually solved on a large computational system. Large computational systems<br />
consume a lot of energy which is not ideal for mobile robots. A field<br />
programmable gate array (FPGA) allow developers to create reconfigurable<br />
hardware architectures which could be more efficient in terms of energy<br />
compared to standard computer systems because it has parallel capabilities.<br />
<br />
One aspect of SLAM is ICP (Iterative Closest Point). ICP is used to find<br />
the transformation between two sensor observations (laser range scans) to<br />
determine the movement of the robot. In this talk we explore a way how an<br />
ICP algorithm could be realized on an FPGA using the functional hardware<br />
description language CλaSH.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1389NL-FP dag 20172017-01-09T10:21:33Z<p>Markus Klinik: /* Registration, Cost, Deadline */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to Markus Klinik including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 [[:File:2017-FP-Dag-TDD-Sessions.pdf|Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris]]<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Hendrik Folmer - SLAM on FPGA using CλaSH<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Hendrik Folmer - SLAM on FPGA using CλaSH ====<br />
<br />
SLAM stands for simultaneous localization and mapping and is a mathematical<br />
problem in robotics with a potentially heavy computational load which is<br />
usually solved on a large computational system. Large computational systems<br />
consume a lot of energy which is not ideal for mobile robots. A field<br />
programmable gate array (FPGA) allow developers to create reconfigurable<br />
hardware architectures which could be more efficient in terms of energy<br />
compared to standard computer systems because it has parallel capabilities.<br />
<br />
One aspect of SLAM is ICP (Iterative Closest Point). ICP is used to find<br />
the transformation between two sensor observations (laser range scans) to<br />
determine the movement of the robot. In this talk we explore a way how an<br />
ICP algorithm could be realized on an FPGA using the functional hardware<br />
description language CλaSH.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1388NL-FP dag 20172017-01-09T08:56:18Z<p>Markus Klinik: /* Program */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 [[:File:2017-FP-Dag-TDD-Sessions.pdf|Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris]]<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Hendrik Folmer - SLAM on FPGA using CλaSH<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Hendrik Folmer - SLAM on FPGA using CλaSH ====<br />
<br />
SLAM stands for simultaneous localization and mapping and is a mathematical<br />
problem in robotics with a potentially heavy computational load which is<br />
usually solved on a large computational system. Large computational systems<br />
consume a lot of energy which is not ideal for mobile robots. A field<br />
programmable gate array (FPGA) allow developers to create reconfigurable<br />
hardware architectures which could be more efficient in terms of energy<br />
compared to standard computer systems because it has parallel capabilities.<br />
<br />
One aspect of SLAM is ICP (Iterative Closest Point). ICP is used to find<br />
the transformation between two sensor observations (laser range scans) to<br />
determine the movement of the robot. In this talk we explore a way how an<br />
ICP algorithm could be realized on an FPGA using the functional hardware<br />
description language CλaSH.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=File:2017-FP-Dag-TDD-Sessions.pdf&diff=1387File:2017-FP-Dag-TDD-Sessions.pdf2017-01-09T08:53:40Z<p>Markus Klinik: Slides for a talk at the FP day 2017</p>
<hr />
<div>Slides for a talk at the FP day 2017</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1386NL-FP dag 2017/Participants2017-01-05T13:06:16Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, No<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No<br />
# Ruud Koot, -, No<br />
# Hendrik Folmer, Universiteit Twente, Yes<br />
# Peter Achten, Radboud University, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1385NL-FP dag 2017/Participants2017-01-05T12:58:32Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, No<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No<br />
# Ruud Koot, -, No<br />
# Hendrik Folmer, Universiteit Twente, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1384NL-FP dag 20172017-01-05T12:56:52Z<p>Markus Klinik: /* Christiaan Baaij - Translating recursive Haskell descriptions to circuits */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Hendrik Folmer - SLAM on FPGA using CλaSH<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Hendrik Folmer - SLAM on FPGA using CλaSH ====<br />
<br />
SLAM stands for simultaneous localization and mapping and is a mathematical<br />
problem in robotics with a potentially heavy computational load which is<br />
usually solved on a large computational system. Large computational systems<br />
consume a lot of energy which is not ideal for mobile robots. A field<br />
programmable gate array (FPGA) allow developers to create reconfigurable<br />
hardware architectures which could be more efficient in terms of energy<br />
compared to standard computer systems because it has parallel capabilities.<br />
<br />
One aspect of SLAM is ICP (Iterative Closest Point). ICP is used to find<br />
the transformation between two sensor observations (laser range scans) to<br />
determine the movement of the robot. In this talk we explore a way how an<br />
ICP algorithm could be realized on an FPGA using the functional hardware<br />
description language CλaSH.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1383NL-FP dag 20172017-01-05T12:56:12Z<p>Markus Klinik: /* Program */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Hendrik Folmer - SLAM on FPGA using CλaSH<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1382NL-FP dag 2017/Participants2017-01-05T12:55:28Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No<br />
# Ruud Koot, -, No<br />
# Hendrik Folmer, Universiteit Twente, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1381NL-FP dag 2017/Participants2017-01-05T12:53:02Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No<br />
# Ruud Koot, -, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1380NL-FP dag 2017/Participants2017-01-05T12:52:16Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1379NL-FP dag 2017/Participants2017-01-05T12:50:21Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, No<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1378NL-FP dag 20172017-01-05T12:48:54Z<p>Markus Klinik: /* Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Christiaan Baaij - Translating recursive Haskell descriptions to circuits<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
Most type systems that support polymorphic functions are based on a version of System-F. We argue that this limits useful programming paradigms for languages with lazy evaluation. We motivate an extension of System-F alleviating this limitation.<br />
<br />
We in particular argue that in such languages the relationship between polymorphic and existential types can be made more systematic by allowing to pass back (part of) an existential result of a function call as an argument to the the function call that produced that value.<br />
<br />
After presenting our extension to System-F we show how we can implement the strict-state thread monad \ensuremath{\Conid{ST}} by using a returned existential type in specialising the polymorphic function which returns that type. Currently this monad is built-in into the runtime system of GHC and as such has become part of the language.<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1377NL-FP dag 20172017-01-03T13:23:44Z<p>Markus Klinik: /* Program */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Christiaan Baaij - Translating recursive Haskell descriptions to circuits<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1376NL-FP dag 20172017-01-03T13:23:19Z<p>Markus Klinik: /* Jan Martin Jansen - tbd */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - tbd<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Christiaan Baaij - Translating recursive Haskell descriptions to circuits<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - A Portable VM-based implementation Platform for non-strict Functional Programming Languages ====<br />
<br />
The Web has become a paramount deployment platform for computer<br />
applications. Modern Web-application require execution of code on both<br />
server- and client-side. For the client-side JavaScript is the more-or-less<br />
default platform for execution of code. Users of Functional Programming<br />
languages like Haskell and Clean, who want to develop their software<br />
completely in these languages, should rely on dedicated methods to<br />
transform their code to something that can be executed on top of<br />
JavaScript. In this talk we introduce a Virtual Machine that is capable of<br />
efficient execution of bytecode generated by a compiler for a non-strict<br />
intermediate functional language. The virtual machine has several<br />
implementations supporting the same bytecode, including JavaScript and<br />
asm.js versions. In this way we obtain a portable execution platform for<br />
non-strict Functional languages with a better client-side performance than<br />
existing client-side execution platforms.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1375NL-FP dag 20172017-01-03T11:23:24Z<p>Markus Klinik: /* Program */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - tbd<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Christiaan Baaij - Translating recursive Haskell descriptions to circuits<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - tbd ====<br />
<br />
tdb<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1374NL-FP dag 20172017-01-03T11:11:12Z<p>Markus Klinik: /* Program */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Jeroen Bransen - Music in the Cloud<br />
* 10:45 - 11:10 Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming <br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris<br />
* 12:05 - 12:30 Guillaume Allais - agdARGS: declarative hierarchical command line interfaces<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Jan Martin Jansen - tbd<br />
* 14:25 - 14:50 Gert-Jan Bottu - Quantified class constraints in Haskell<br />
* 14:50 - 15:15 Christiaan Baaij - Translating recursive Haskell descriptions to circuits<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts<br />
* 16:10 - 16:35 Johan Hidding - Noodles, a functional concurrent programming model for Python<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - tbd ====<br />
<br />
tdb<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1373NL-FP dag 20172017-01-03T10:56:11Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
==== Jan Martin Jansen - tbd ====<br />
<br />
tdb<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1372NL-FP dag 20172017-01-03T10:55:38Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
==== Christiaan Baaij - Translating recursive Haskell descriptions to circuits ====<br />
<br />
CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. This is just a fancy way of saying that CλaSH is a compiler for Haskell, but instead of creating machine code (like GHC), or javascript (like GHCjs), CλaSH generates digital circuits (in the form of VHDL or Verilog code).<br />
<br />
One problem that the CλaSH compiler faces, and currently doesn't even do, is unrolling recursive functions "in general". In practice, this is amortised by the fact that the CλaSH compiler has hard-coded knowledge to unroll well-known higher-order functions (map, zipWith, etc.)<br />
<br />
In this talk we explore another option to unroll recursive descriptions at compile time, by using closed type families to encode our data-types, and type class methods for our recursive functions. The Glasgow Haskell compiler (GHC) will then unroll the recursive descriptions for us as part of its class instance resolution mechanism.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1371NL-FP dag 2017/Participants2017-01-03T10:53:22Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes<br />
# Rinse Wester, Westpulse, Yes<br />
# Robin Appel, Universiteit Twente, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1370NL-FP dag 2017/Participants2017-01-03T10:51:43Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1369NL-FP dag 2017/Participants2017-01-03T10:51:28Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes<br />
# Ingmar te Raa, Fugro Raildata B.V., Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1368NL-FP dag 2017/Participants2017-01-01T21:53:24Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No<br />
# Roel van Dijk, LumiGuide, Yes<br />
# Bas van Dijk, LumiGuide, Yes<br />
# Falco Peijnenburg, LumiGuide, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1367NL-FP dag 2017/Participants2017-01-01T21:52:08Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes<br />
# Leroy van Engelen, -, Yes<br />
# Raphael Sousa Santos, -, Yes (vegan)<br />
# Lars Jellema, Radboud University, No<br />
# Felix Stegerman, Radboud University, No<br />
# Sal Wolffs, Radboud University, No<br />
# Patrick Hilhorst, Radboud University, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1366NL-FP dag 2017/Participants2016-12-31T10:41:20Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes<br />
# João Paulo Pizani Flor, Utrecht University, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1365NL-FP dag 2017/Participants2016-12-29T12:45:13Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes<br />
# Hans-Jürgen Guth, -, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1364NL-FP dag 2017/Participants2016-12-29T12:44:29Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No<br />
# Jeroen Vrijkorte, ORTEC, Yes<br />
# Arjen van Weelden, Dutch Tax and Customs Administration, Yes<br />
# Tim Soethout, ING Bank / CWI, No<br />
# Philippe Lagas, -, Yes<br />
# Steffen Michels, Radboud University, Yes<br />
# Niels van der Weide, Radboud University, No<br />
# Laszlo Domoszlai, Radboud University, Yes<br />
# Joshua Moerman, Radboud University, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1363NL-FP dag 2017/Participants2016-12-28T12:26:05Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes<br />
# Janis Voigtländer, -, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1362NL-FP dag 2017/Participants2016-12-23T20:14:26Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No<br />
# Ferdinand van Walree, Universiteit Utrecht, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1361NL-FP dag 20172016-12-23T18:51:58Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
==== Doaitse Swierstra - Build your own ST Monad with Polymorphic Contexts ====<br />
<br />
lorem ipsum<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1360NL-FP dag 2017/Participants2016-12-23T18:43:38Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes<br />
# Doaitse Swierstra, -, Yes<br />
# Matthew Swart, University Utrecht, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1359NL-FP dag 2017/Participants2016-12-23T18:35:31Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No<br />
# Bas de Haas, Chordify, Yes<br />
# Aldo Gunsing, Radboud University, Yes<br />
# Betsy Pepels, Dutch Tax and Customs Administration, Yes<br />
# Camil Staps, Radboud Universiteit, No<br />
# Peter Lebbing, University of Twente, Yes<br />
# Christiaan Baaij, QBayLogic, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1358NL-FP dag 2017/Participants2016-12-20T12:33:58Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No<br />
# Mart Lubbers, Radboud Universiteit, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1357NL-FP dag 2017/Participants2016-12-20T12:33:25Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No<br />
# Bastiaan Heeren, Open Universiteit, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1356NL-FP dag 2017/Participants2016-12-20T12:31:41Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes<br />
# Chide Groenouwe, Universiteit Utrecht, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1355NL-FP dag 2017/Participants2016-12-18T10:49:39Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes<br />
# Clemens Grelck, Universiteit van Amsterdam, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1354NL-FP dag 2017/Participants2016-12-13T12:15:13Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No<br />
# Henk Versluis, Spir-it, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1353NL-FP dag 2017/Participants2016-12-13T10:21:34Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
# Victor Cacciari Miraldo, Universiteit Utrecht, Yes<br />
# Arjan Boeijink, University of Twente, Yes<br />
# Pieter Koopman, Radboud University, No<br />
# Jan Martin Jansen, Nederlandse Defensie Academie, No</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1352NL-FP dag 2017/Participants2016-12-13T10:19:28Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes<br />
# Nico Naus, Universiteit Utrecht, No<br />
# Ivica Milovanovic, Utrecht University, No<br />
# Nikolaos Bezirgiannis, CWI, No<br />
# Folkert de Vries, RUG, Yes<br />
# John Verheij, AWL Techniek, No<br />
#</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1351NL-FP dag 2017/Participants2016-12-09T13:31:55Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes<br />
# Wouter Swierstra, Universiteit Utrecht, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1350NL-FP dag 2017/Participants2016-12-09T10:29:24Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes<br />
# Sebastiaan la Fleur, University of Twente, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1349NL-FP dag 20172016-12-06T13:53:44Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
==== Gert-Jan Bottu - Quantified class constraints in Haskell ====<br />
<br />
When making a type an instance of a class in Haskell, it is often necessary to<br />
impose additional constraints on the type variables involved (e.g. equality on<br />
lists is defined via equality on its elements). Currently, the Haskell type<br />
checker limits us to writing only first-order predicates as class constraints.<br />
<br />
In this work we investigate all formal aspects of an extension to Haskell's<br />
type system, namely Quantified Class Constraints (first described by R. Hinze<br />
and S. P. Jones). This extension lifts the limitation, allowing programmers to<br />
write higher-order predicates.<br />
<br />
This talk illustrates the problem we wish to address and speculates on ways of<br />
addressing the main formal challenges. These include type checking, type<br />
inference and elaboration into System F. Lastly, we will provide a brief<br />
overview of the work to come in the next couple of months.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1348NL-FP dag 2017/Participants2016-12-06T13:52:49Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes<br />
# Gert-Jan Bottu, KU Leuven, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1347NL-FP dag 2017/Participants2016-12-05T16:01:27Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1346NL-FP dag 20172016-12-05T15:40:33Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
==== Guillaume Allais - agdARGS: declarative hierarchical command line interfaces ====<br />
<br />
agdARGS is a library for declarative hierarchical command line interfaces. https://github.com/gallais/agdARGS<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1345NL-FP dag 2017/Participants2016-12-05T15:38:03Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes<br />
# Guillaume Allais, Radboud University, ?</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1342NL-FP dag 2017/Participants2016-12-05T12:22:34Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes<br />
# Jan Kuper, QBayLogic, Yes<br />
# Mathijs Kwik, -, Yes</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/google49545bac8848d313.html&diff=1341NL-FP dag 2017/google49545bac8848d313.html2016-12-01T10:10:33Z<p>Markus Klinik: Created page with "google-site-verification: google49545bac8848d313.html"</p>
<hr />
<div>google-site-verification: google49545bac8848d313.html</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017&diff=1340NL-FP dag 20172016-12-01T09:53:10Z<p>Markus Klinik: /* Talks */</p>
<hr />
<div>The Dutch Functional Programming Day is an annual gathering of researchers, <br />
students, and practitioners sharing a common interest in functional<br />
programming. The day features talks that cover the latest advances in research,<br />
teaching, and applications in the functional programming area. Coffee and lunch<br />
breaks provide ample opportunity for networking with your colleagues and<br />
meeting new people. Experts and newcomers to the field are equally welcome.<br />
<br />
The NL-FP day 2017 takes place on '''Friday, January 6, 2017''' at the<br />
[http://www.ru.nl/ Radboud University] in Nijmegen.<br />
<br />
== Location ==<br />
<br />
The FP dag takes place in room LIN 4, Linnaeusgebouw, Heyendaalseweg 137, 6525 AJ Nijmegen.<br />
<br />
[http://www.openstreetmap.org/?mlat=51.82273&mlon=5.86860#map=18/51.82273/5.86860 OpenStreetMap]<br />
<br />
[https://www.google.nl/maps/place/Linnaeusgebouw/@51.8228761,5.8673159,17.25z/data=!4m13!1m7!3m6!1s0x47c708fb3a371503:0x71b9931f22801e9f!2sHeyendaalseweg,+Nijmegen!3b1!8m2!3d51.8234133!4d5.8673366!3m4!1s0x0:0x4afb77999c96834b!8m2!3d51.8227287!4d5.8684266 Google Maps]<br />
<br />
[http://www.ru.nl/publish/pages/802302/940px/uvb-linnaeus.jpg http://www.ru.nl/publish/pages/802302/460px/uvb-linnaeus.jpg]<br />
<br />
== How to get there ==<br />
<br />
[[File:Directions.png|200px|thumb|right|From Station Heyendaal to the Linnaeusgebouw]]<br />
<br />
From Nijmegen Central Station, take any of the following busses to the bus stop Huygensgebouw.<br />
* 10 Heyendaal Shuttle (every 4 minutes)<br />
* 11 Beuningen Aalsterveld<br />
* 12 Druten Busstation<br />
* 13 Wijchen<br />
* 14 Brakkenstein<br />
* 15 Wijchen<br />
* 300 Nijmegen via Bemmel<br />
The building is directly opposite of the bus stop.<br />
<br />
Alternatively, there is a local train from the central station to the station "Nijmegen Heyendaal", from where you have to walk southwards over the bridge until you see the building on your left.<br />
<br />
== Registration, Cost, Deadline ==<br />
<br />
Please register by sending an email to [mailto:m.klinik@cs.ru.nl?subject=NLFP2017%20Registration Markus Klinik] including<br />
<br />
* Name<br />
* Affiliation<br />
* Whether you want to give a talk<br />
* Whether you want to participate in the dinner (please indicate dietary restrictions)<br />
<br />
If you want to give a talk, please include the title and a short abstract. Aim for 20 minutes plus 5 minutes discussion.<br />
<br />
There are no participation costs except for dinner, which everybody pays for themselves.<br />
<br />
There is a soft registration deadline at the end of this year, primarily because we need to make dinner reservations.<br />
<br />
[[NL-FP_dag_2017/Participants|Participants]]<br />
<br />
== Program ==<br />
<br />
A preliminary sketch of the day.<br />
<br />
* 9:30 - 10:15 Registration<br />
* 10:15 - 10:20 Welcome and Opening<br />
* 10:20 - 10:45 Talk 1<br />
* 10:45 - 11:10 Talk 2<br />
* 11:10 - 11:40 Break<br />
* 11:40 - 12:05 Talk 3<br />
* 12:05 - 12:30 Talk 4<br />
* 12:30 - 14:00 Lunch<br />
* 14:00 - 14:25 Talk 5<br />
* 14:25 - 14:50 Talk 6<br />
* 14:50 - 15:15 Talk 7<br />
* 15:15 - 15:45 Break<br />
* 15:45 - 16:10 Talk 8<br />
* 16:10 - 16:35 Talk 9<br />
* 16:35 - 16:45 Closing<br />
* 18:00 Dinner<br />
<br />
== Dinner ==<br />
<br />
After the program at the university we will have dinner at the restaurant [http://restaurantdehemel.nl/ De Hemel]. They are going to serve us their [http://restaurantdehemel.nl/restaurant/diner/ Diner Churrasco]. We'll be sitting in the Brouwerszaal where they actually brew the beer they serve. For people wo eat neither meat nor fish there are vegetarian options, but we have to tell them beforehand. The menu costs about 30 EUR, drinks not included. Everybody pays for themselves.<br />
<br />
We'll go there by public transport. To find the way, team up with one of the locals or use modern technology.<br />
<br />
De Hemel<br><br />
Restaurant & Brouwerscafe<br><br />
Franseplaats 1<br><br />
6511 VS Nijmegen<br><br />
[http://www.openstreetmap.org/?mlat=51.84878&mlon=5.86442#map=19/51.84878/5.86442 OpenStreetMap]<br />
<br />
== Contact ==<br />
<br />
[http://www.cs.ru.nl/staff/Markus.Klinik Markus Klinik]<br />
<br />
m.klinik@cs.ru.nl<br />
<br />
== Talks ==<br />
<br />
==== Jeroen Bransen - Music in the Cloud ====<br />
<br />
Using Cloud Haskell for automatic chord extraction<br />
<br />
Chordify is a music e-learning platform that transforms any music<br />
source, such as a YouTube video, into chords. Learning to play your<br />
favorite songs has never been easier, it's like karaoke for the fingers.<br />
Chordify attracts 1.5M visitors every month, we have 550k registered<br />
users, and chordified over 4.8M songs.<br />
<br />
The automatic chord extraction algorithm is implemented in Haskell. The<br />
work is distributed over multiple servers using the Cloud Haskell<br />
framework, which makes our service scalable and reliable. In this talk<br />
we show how functional programming, and the Cloud Haskell framework in<br />
particular, are used within Chordify and how they have helped Chordify<br />
to become a successful music e-learning platform.<br />
<br />
==== Johan Hidding - Noodles, a functional concurrent programming model for Python ====<br />
<br />
We present a new model for doing parallel/concurent<br />
programming in Python, targeted at managing complex computational<br />
workflows in distributed environments.<br />
The design of this model is geared towards minimal modification of<br />
existing Python code, and ease of use for domain scientists with<br />
limited computational expertise.<br />
We leverage the implicit parallelism present in a Python user-script by<br />
creating a directed acyclic graph of the function calls in the script.<br />
This graph can be executed using one of the available runners, making<br />
the approach scalable from laptop to cluster computer environments.<br />
<br />
==== Jan de Muijnck-Hughes - Type-Driven Design of Communicating Systems using Idris ====<br />
<br />
The idea of communicating systems is a cornerstone of modern technology and<br />
allows heterogeneous collections of components to communicate through<br />
well-defined protocols. However, there is a disconnect between the tooling and<br />
languages used to design, implement and reason about communication protocols.<br />
<br />
Idris is a general purpose programming language that supports full-dependent<br />
types, providing programmers with the ability to reason more precisely about<br />
programs. Inspired by work on session types and algebraic effect handlers our<br />
research looks to leverage such state-of-the-art programming paradigms in a<br />
dependently typed setting to describe and reason about communication protocols<br />
and their implementation in different communication contexts.<br />
<br />
This talk presents our current progress and introduces =Sessions=, a library<br />
for describing, and reasoning about, the interactions of a communicating<br />
system. Demonstrated is use of sessions to describe common communication<br />
patterns, and how the library enforces correctness of the pattern itself<br />
through type-level correct-by-construction guarantees.<br />
<br />
Given time future work will also be presented detailing our next steps in<br />
linking these descriptions to implementations such that compile time<br />
correctness guarantees over the actions of an entity in a communicating system<br />
can be given respective to a known specification.<br />
<br />
==== Arjan Oortgiese - A Distributed Server Architecture for Task Oriented Programming ====<br />
<br />
The iTasks framework is a Clean library for developing multi-user, web-enabled applications.<br />
It offers a special flavor of functional programming, Task-Oriented Programming (TOP),<br />
where the notion of tasks play the central role.<br />
In iTasks one specifies the tasks, that end-users and systems have to do to accomplish a certain goal.<br />
From such a specification a central web-server is generated which coordinates the work described.<br />
To provide a specific end-user client with a user-interface for doing the task, web-pages are dynamically generated for the tasks to be done, that can be inspected by any HTML 5 compatible browser.<br />
In this way, any PC, tablet or phone can be used by the end-user to do his or her work.<br />
<br />
The current architecture of iTasks is a client-server architecture that is easy to maintain, but it also has certain disadvantages.<br />
The use of one centralized server can become a bottleneck when it has to serve too many clients.<br />
Furthermore, one cannot work offline on tasks when the connection with this central server is lost:<br />
the server constantly needs to administrate the progress clients make.<br />
A feature of the iTask system is that arbitrary complex browser applications can be defined as client.<br />
For this purpose Clean functions are compiled to JavaScript.<br />
But, certainly compared to native Clean code, browsers execute JavaScript code extremely slow,<br />
while only relatively small browser applications can be generated, due to stack size limitations commonly imposed by the standard browsers.<br />
Finally, due to security restrictions, not all resources offered by a platform can be accessed in a browser,<br />
such as the file system or certain hardware like the Bluetooth connection on a tablet or smart phone.<br />
<br />
In this paper, we present a solution to address these drawbacks.<br />
In the new iTask architecture one can have an arbitrary topology of distributed iTask controllers.<br />
An iTask controller can act as a server like in the old iTask architecture, as well as a client of some other controller.<br />
The coordination of tasks can be distributed over these controllers, e.g. to decrease the task load of a serving device or to work off-line on a task on a client device.<br />
A first implementation is made that works for Intel and ARM processors running MacOS, Linux, or Windows.<br />
Android Apps can be generated that include a local server, include a browser facility, and have access any resource available on the platform.<br />
<br />
We believe our solution is of general interest for anyone who is interested in generating distributed multi-platform applications from one single source code.<br />
<br />
== Past NL-FP Days ==<br />
<br />
* 2016 [http://foswiki.cs.uu.nl/foswiki/NlFpDay2016/WebHome Universiteit Utrecht]<br />
* 2015 [http://wwwhome.cs.utwente.nl/~jankuper/fp-dag/ Universiteit van Twente]<br />
* 2014 [https://staff.fnwi.uva.nl/c.u.grelck/nl-fp-day-2014.html Universiteit van Amsterdam]<br />
* 2013 [http://wiki.clean.cs.ru.nl/NL-FP_dag_2013 Radboud Universiteit Nijmegen]<br />
* 2012 [http://foswiki.cs.uu.nl/foswiki/FPDag2012 Universiteit Utrecht]<br />
* 2011 Universiteit Twente, Enschede<br />
* 2010 Radboud Universiteit Nijmegen<br />
* 2009 [http://www.win.tue.nl/~japie/FP-dag-2009/ Technische Universiteit Eindhoven]<br />
* 2008 Open Universiteit, Utrecht<br />
* 2007 Marine, Amsterdam<br />
* 2006 Hogeschool Avans, Breda<br />
* 2005 [http://www.cs.rug.nl/~terlouw/fpdag2005.html Rijksuniversiteit Groningen]<br />
* 2004 Universiteit Twente, Enschede<br />
* 2003 Universiteit Utrecht<br />
* 2002 Katholieke Universiteit Nijmegen<br />
* 2001 Technische Universiteit Delft<br />
* 2000 Technische Universiteit Eindhoven<br />
* 1999 Hogeschool Breda<br />
* 1998 RijksUniversiteit Leiden<br />
* 1997 Hogeschool Leeuwarden<br />
* 1996 Universiteit van Amsterdam<br />
* 1995 Technische Universiteit Twente, Enschede<br />
* 1994 Rijksuniversiteit Utrecht<br />
* 1993 Katholieke Universiteit Nijmegen</div>Markus Klinikhttps://wiki.clean.cs.ru.nl/index.php?title=NL-FP_dag_2017/Participants&diff=1339NL-FP dag 2017/Participants2016-12-01T09:52:18Z<p>Markus Klinik: </p>
<hr />
<div>Name, Affiliation, Dinner<br />
<br />
# Markus Klinik, Radboud University, Yes<br />
# Damian Nadales, Philips, Yes<br />
# Tim Steenvoorden, Radboud University, Yes<br />
# Jurrien Stutterheim, Radboud University, Yes<br />
# Bas Lijnse, Radboud University, Yes<br />
# Rinus Plasmeijer, Radboud University, Yes<br />
# Jeroen Bransen, Chordify, Yes (vegetarian)<br />
# Johan Hidding, Netherlands eScience Center, Yes<br />
# Jan de Muijnck-Hughes, University of St Andrews, Yes<br />
# Arjan Oortgiese, Radboud University, Yes</div>Markus Klinik