Difference between revisions of "NL-FP dag 2018"

From Clean
Jump to navigationJump to search
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
Looking for [[NL-FP dag 2019]]? Not all search engines find the page yet...
 +
 
The Dutch Functional Programming Day is an annual gathering of researchers,  
 
The Dutch Functional Programming Day is an annual gathering of researchers,  
 
students, and practitioners sharing a common interest in functional
 
students, and practitioners sharing a common interest in functional
Line 61: Line 63:
 
* 9:30 Registration
 
* 9:30 Registration
 
* 10:15 Welcome and a few words from our sponsor
 
* 10:15 Welcome and a few words from our sponsor
* 10:30 - 12:30 Presentations with a coffee break
+
* 10:30 Type-Directed Diffing of Structured Data
 +
* 11:00 Break
 +
* 11:30 Task Oriented Pearl: Distributed Blockchain Applications
 +
* 12:00 Type Directed Interactive Workflow Modelling
 
* 12:30 Lunch
 
* 12:30 Lunch
* 14:00 - 16:30 Presentations with a coffee break
+
* 14:00 FPGA design using CλaSH
 +
* 14:30 Type-safe Object-Relational Mapping
 +
* 15:00 Break
 +
* 15:30 Cloogle: a programming language search engine and its applications
 +
* 16:00 Agile Law Execution using Domain Specific Languages and Software Factories
 +
* 16:30 Organizing the next FP-day
 
* 16:45 Drinks
 
* 16:45 Drinks
 
* 17:30 - 19:00 Pizza's
 
* 17:30 - 19:00 Pizza's
Line 92: Line 102:
 
current state. We also discuss the things we are currently working on:
 
current state. We also discuss the things we are currently working on:
 
client-side search and editor integration.
 
client-side search and editor integration.
 +
 +
[[Media:Staps-cloogle-handout.pdf]]
  
 
==== Victor Miraldo - Type-Directed Diffing of Structured Data ====
 
==== Victor Miraldo - Type-Directed Diffing of Structured Data ====
Line 105: Line 117:
 
computer programs in particular – as opposed to only considering
 
computer programs in particular – as opposed to only considering
 
modifications between their textual representations.
 
modifications between their textual representations.
 +
 +
[[Media:Miraldo-fpdag2018.pdf]]
  
 
==== Jan Kuper - FPGA design using CλaSH ====
 
==== Jan Kuper - FPGA design using CλaSH ====
Line 112: Line 126:
 
We will illustrate the approach with several examples.
 
We will illustrate the approach with several examples.
  
==== Roel & Bas van Dijk - Type-safe Object-Relational Mapping ====
+
==== Roel van Dijk - Type-safe Object-Relational Mapping ====
  
 
At LumiGuide we use the PostgreSQL database to store the objects that are important in our bicycle detection and guidance systems. We choose PostgreSQL mainly for its good ACID guarantees and reliable storage. The relational interface of PostgreSQL is great for writing efficient queries but not so great to interface with using general purpose programming languages such as Haskell. These languages use hierarchical structures as data types (i.e. objects) which don't mix well with relations. We want to use an interface oriented around objects but with PostgreSQL as a backend providing reliable storage and efficient query execution. We don't want this interface to introduce data corruptions and inconsistencies so a type-safe API is desired. We developed the lumi-store Haskell library which provides a type-safe, object oriented interface to a PostgreSQL database while also providing a type-safe relational query interface. In this talk I touch on the API of this library and discuss some interesting implementation details.
 
At LumiGuide we use the PostgreSQL database to store the objects that are important in our bicycle detection and guidance systems. We choose PostgreSQL mainly for its good ACID guarantees and reliable storage. The relational interface of PostgreSQL is great for writing efficient queries but not so great to interface with using general purpose programming languages such as Haskell. These languages use hierarchical structures as data types (i.e. objects) which don't mix well with relations. We want to use an interface oriented around objects but with PostgreSQL as a backend providing reliable storage and efficient query execution. We don't want this interface to introduce data corruptions and inconsistencies so a type-safe API is desired. We developed the lumi-store Haskell library which provides a type-safe, object oriented interface to a PostgreSQL database while also providing a type-safe relational query interface. In this talk I touch on the API of this library and discuss some interesting implementation details.
 +
 +
[[Media:LumiGuide-FP-Dag-2018.zip]]
  
 
==== Gert Veldhuijzen van Zanten - Agile Law Execution using Domain Specific Languages and Software Factories ====
 
==== Gert Veldhuijzen van Zanten - Agile Law Execution using Domain Specific Languages and Software Factories ====
Line 131: Line 147:
 
that it is natural to implement distributed blockchain applications in a TOP
 
that it is natural to implement distributed blockchain applications in a TOP
 
language such as iTasks.
 
language such as iTasks.
 +
 +
[[Media:Lubbers-presentation.pdf‎]]
  
 
==== Tim Steenvoorden - Type Directed Interactive Workflow Modelling ====
 
==== Tim Steenvoorden - Type Directed Interactive Workflow Modelling ====
Line 140: Line 158:
 
These flows have a visual representation inspired by Petri nets as well as a formal language representation inspired by natural language.
 
These flows have a visual representation inspired by Petri nets as well as a formal language representation inspired by natural language.
 
Because all information in our workflows is typed, we are able to generate full blown web applications by using the iTasks system as a backend.
 
Because all information in our workflows is typed, we are able to generate full blown web applications by using the iTasks system as a backend.
 +
 +
[[Media:Steenvoorden-fpdag-slides.pdf]]
  
 
== Past NL-FP Days ==
 
== Past NL-FP Days ==

Latest revision as of 13:18, 3 December 2018

Looking for NL-FP dag 2019? Not all search engines find the page yet...

The Dutch Functional Programming Day is an annual gathering of researchers, students, and practitioners sharing a common interest in functional programming. The day features talks that cover the latest advances in research, teaching, and applications in the functional programming area. Coffee and lunch breaks provide ample opportunity for networking with your colleagues and meeting new people. Experts and newcomers to the field are equally welcome.

The NL-FP day 2018 takes place on Friday, January 5, 2018 at the Walter Bos Complex of the Dutch Tax and Customs Administration in Apeldoorn.

Location

The FP-day takes place in De Kern at the Walter Bos Complex of the Dutch Tax and Customs Administration in Apeldoorn.

OpenStreetMaps

Google Maps

How to get there

The main entrance of the Walterboscomplex is located at J.F. Kennedylaan 8, Apeldoorn. Participant need to report and identify themselves at the reception in order to receive visitor passes. Please wait for people from the organization to pick you up and escort you to De Kern where the presentations will be.

By public transport:

Every 15 minutes from Apeldoorn station to bus stop Belastingkantoor (in about 10 minutes), using bus number 2 (Apenheul) or 6 (Rijkskantoren).

By car (in Dutch):

Vanaf Amersfoort (A1): Afslag nr. 19 (Hoenderloo/Apeldoorn). Rechtsaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).

Vanaf Deventer (A1): Afslag nr. 19 (Ede/Hoenderloo). Linksaf richting Apeldoorn. Bij 1e verkeerslicht linksaf (Laan van Spitsbergen). Bij de rotonde 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).

Vanaf Zwolle (A50): Afslag nr. 25 (Apeldoorn- Noord). Rechtsaf richting Apeldoorn. Bij 3e verkeerslicht rechtsaf (Anklaarseweg) vervolgens 1e verkeerslicht linksaf (Zwolseweg gaat over in Jachtlaan). Op groot kruispunt bij De Naald rechtdoor. Op rotonde (bij AGOVV voetbalterrein) 3e afslag rechtsaf slaan (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).

Vanaf Arnhem (A50): Afslag nr. 22 (Apeldoorn- Zuid/ Beekbergen). Weg volgen door Beekbergen. Na passeren viaduct bij de rotonde derde afslag rechtsaf en weg vervolgen (Laan van Westenenk, overgaand in Laan van Spitsbergen) tot aan de 2e rotonde, 1e afslag rechtsaf (John F. Kennedylaan). Aan uw linkerhand ziet u het Walterboscomplex. U kunt het complex betreden via de hoofdentree (de 2e ingang met slagbomen).

Registration and deadline

Please note that to the nature of the location, registration in advance is required. As well as matching identification (passport, driver's license, or similar) before entering the venue! Photography and/or setting up a local WiFi network is explicitly not allowed. There will be a photographer present during the day.

Please register by sending an email to a.van.weelden@belastingdienst.nl including

  • your name, as shown on passport or driver's license
  • your affiliation, if any
  • whether you want pizza, vegetarian pizza, or no pizza.
  • whether you want to give a talk

There are no costs for anything this year, as it is fully sponsored by the Dutch Tax and Customs Administration.

The registration deadline was December 17th, as we need a list of participants for the security staff. Thank you for registering early, since we also need this to order the right number of badges, drinks and pizza's.

Participants

Program

  • 9:30 Registration
  • 10:15 Welcome and a few words from our sponsor
  • 10:30 Type-Directed Diffing of Structured Data
  • 11:00 Break
  • 11:30 Task Oriented Pearl: Distributed Blockchain Applications
  • 12:00 Type Directed Interactive Workflow Modelling
  • 12:30 Lunch
  • 14:00 FPGA design using CλaSH
  • 14:30 Type-safe Object-Relational Mapping
  • 15:00 Break
  • 15:30 Cloogle: a programming language search engine and its applications
  • 16:00 Agile Law Execution using Domain Specific Languages and Software Factories
  • 16:30 Organizing the next FP-day
  • 16:45 Drinks
  • 17:30 - 19:00 Pizza's

More details will follow.

Dinner

A dinner (pizza's) and drinks will be provided free of charge at the end of the day at the same location. Given that registration is mandatory this time, we'll assume that you stay around for this unless you specify otherwise.

Contact

  • Betsy Pepels at work
  • Arjen van Weelden at work or at home if your think that your e-mail did not reach me via my work address, which happens sometimes.

Talks

The following people already requested to present a talk:

Camil Staps - Cloogle: a programming language search engine and its applications

Cloogle (https://cloogle.org) is a search engine for the Clean language, similar to Haskell's Hoogle. The modular setup makes it fairly easy to be reused in other programs, like Integrated Development Environments (IDEs) and editor plugins. In this talk we give a general overview of the system and show how it evolved from a web interface to grep into its current state. We also discuss the things we are currently working on: client-side search and editor integration.

Media:Staps-cloogle-handout.pdf

Victor Miraldo - Type-Directed Diffing of Structured Data

The Unix diff utility that compares lines of text is used pervasively by version control systems. Yet certain changes to a program may be dificult to describe accurately in terms of modifications to individual lines of code. As a result, observing changes at such a fixed granularity may lead to unnecessary con icts between difierent edits. This talk discusses a generic representation for describing transformations between algebraic data types. These representations can be used to give a more accurate account of modifications made to algebraic data structures – and the abstract syntax trees of computer programs in particular – as opposed to only considering modifications between their textual representations.

Media:Miraldo-fpdag2018.pdf

Jan Kuper - FPGA design using CλaSH

It is widely recognized that mainstream hardware design languages (VHDL, Verilog) have poor abstraction mechanisms, turning FPGA design into a cumbersome activity. Most high level synthesis languages only partially solve this problem, mostly because they take a sequential perspective. CλaSH, on the other hand, starts from a mathematical perspective exploiting the abstraction mechanisms of the functional programming language Haskell, including polymorphism, type derivation, and higher order functions. Since every CλaSH specification is an executable Haskell program, testing and debugging can be done at top level. Further advantages of a mathematical approach to hardware design are the possibility to transformations on a given design to get an optimal space-time performance. We will illustrate the approach with several examples.

Roel van Dijk - Type-safe Object-Relational Mapping

At LumiGuide we use the PostgreSQL database to store the objects that are important in our bicycle detection and guidance systems. We choose PostgreSQL mainly for its good ACID guarantees and reliable storage. The relational interface of PostgreSQL is great for writing efficient queries but not so great to interface with using general purpose programming languages such as Haskell. These languages use hierarchical structures as data types (i.e. objects) which don't mix well with relations. We want to use an interface oriented around objects but with PostgreSQL as a backend providing reliable storage and efficient query execution. We don't want this interface to introduce data corruptions and inconsistencies so a type-safe API is desired. We developed the lumi-store Haskell library which provides a type-safe, object oriented interface to a PostgreSQL database while also providing a type-safe relational query interface. In this talk I touch on the API of this library and discuss some interesting implementation details.

Media:LumiGuide-FP-Dag-2018.zip

Gert Veldhuijzen van Zanten - Agile Law Execution using Domain Specific Languages and Software Factories

At the Dutch Tax Authority we apply a model driven approach to software engineering. The approach aims to make models that directly describe the actual legislation that is being executed and to provide early feedback using model checks and model execution. We develop domein specific languages including editors, static type checkers, interpreters and code generators. In the talk we will present our vision on agile law execution using domain specific languages and demo our specification environment.

Mart Lubbers - Task Oriented Pearl: Distributed Blockchain Applications

Blockchain calculations are very suitable to implement in a functional programming language. For example, mining a new block is a oneliner in Clean. However, distribution, validation and interfacing is less trivial to implement. Task Oriented Programming (TOP) is a novel programming paradigm implemented as an EDSL in Clean that supports collaboration of parties in a distributed setting. The basic building blocks are tasks and shared data sources and multiuser web applications are generated from the specification. We show that it is natural to implement distributed blockchain applications in a TOP language such as iTasks.

Media:Lubbers-presentation.pdf‎

Tim Steenvoorden - Type Directed Interactive Workflow Modelling

Workflow management systems tend to be complicated, containing many basic elements to design and construct workflows. Also, coming from a workflow specification to an application usable by the end user is a lot of effort. Novel ways to generate this kind of applications, like the functional programming oriented iTasks system, are promising, but still too complicated to use for non-programmers. We present a graphical design tool aiding in specifying work and data flows in a straight forward and modular way, suitable for domain experts and workflow designers.Our tool discerns itself from others by incorporating the information needed to perform a task, thus combining workflows and dataflows into a single concept we call _task flows_. These flows have a visual representation inspired by Petri nets as well as a formal language representation inspired by natural language. Because all information in our workflows is typed, we are able to generate full blown web applications by using the iTasks system as a backend.

Media:Steenvoorden-fpdag-slides.pdf

Past NL-FP Days