Functional Programming eXchange 2014

Topics covered at #FPX

Friday, 14th March at The Skills Matter eXchange, London

8 experts will be speaking. Starts at 9:00 AM.

Want to learn how to inject Functional concepts into your database to get more value from your data? Want to learn how to turn imperative API into a functional one? Fancy meeting other Functional developers to get multiple perspectives on how to tackle your problems?

Scala, Clojure, Lisp, Haskell, Ocaml, Erlang, F#... whatever your discipline, join 100+ functional experts and data science enthusiasts at the Functional Programming eXchange to discover innovative approaches and practical solutions to common problems.


We have a stunning line-up this year, including leading experts such as John Hughes (CEO of Quiv AB), Kevin Hammond (Professor in Computer Science and Functional Programming research group lead at St. Andrews University) and Philip Wadler (Winner of the POPL Most Influential Paper Award and co-author of Introduction to Functional Programming).


A wide range of Functional topics will be tackled including Paraforming: how to develop effective parallel programs with Kevin Hammond, building your own Lisp with Bodil Stokke, how to create robust real world applications with Scott Wlaschin and many more.

Thanks to our sponsors

A practical theory of language-integrated query

In this talk we present a practical theory of language-integrated query based on quotation and normalisation of quoted terms.

How best to blend a domain-specific language into a host language? For the domain of databases, the old question of how to achieve language integrated query is receiving renewed attention, in part because of its support through Microsoft's LINQ framework. Higher-order features prove useful even for constructing first-order queries. We prove a theorem characterising when a host query is guaranteed to generate a single SQL query, and we present experimental results confirming our technique works, even in situations where Microsoft's LINQ framework either fails to produce an SQL query or, in one case, produces an avalanche of SQL queries. Our ideas are implemented in F#, and the talk briefly considers how they might apply to other languages such as Scala and Haskell.

Philip Wadler

Philip Wadler has contributed to the designs of Haskell, Java, and XQuery, and is a co-author of XQuery from the Experts (Addison Wesley, 2004) and Generics and Collections in Java (O'Reilly, 2006).

ParaForming: Forming Parallel Functional Programs using Refactoring

This talk introduces the ParaForming approach, gives some examples and shows how effective parallel programs can be developed using advanced refactoring technology.

Despite Moore's "law", uniprocessor clock speeds have now stalled. Rather than single processors running at ever higher clock speeds, it is common to find dual-, quad- or even hexa-core processors, even in consumer laptops and desktops.

Haswell, Intel's forthcoming multicore architecture, will have eight cores by default. Future hardware will not be slightly parallel, however, as in today's multicore systems, but will be massively parallel, with manycore and perhaps even megacore systems becoming mainstream.

This means that programmers need to start thinking parallel. To achieve this they must move away from traditional programming models where parallelism is a bolted-on afterthought. Rather, programmers must use languages where parallelism is deeply embedded into the programming model from the outset.

By providing a high level model of computation, without explicit ordering of computations, declarative languages in general, and functional languages in particular, offer many advantages for parallel programming.

One of the most fundamental advantages of the functional paradigm is purity. In a purely functional language, as exemplified by Haskell, there are simply no side effects: it is therefore impossible for parallel computations to conflict with each other in ways that are not well understood.

ParaForming aims to radically improve the process of parallelising purely functional programs through a comprehensive set of high-level parallel refactoring patterns for Parallel Haskell, supported by advanced refactoring tools.

By matching parallel design patterns with appropriate algorithmic skeletons using advanced software refactoring techniques and novel cost information, we will bridge the gap between fully automatic and fully explicit approaches to parallelisation, helping programmers "think parallel" in a systematic, guided way. This talk introduces the ParaForming approach, gives some examples and shows how effective parallel programs can be developed using advanced refactoring technology.

Kevin Hammond

I'm a Professor in Computer Science, in the School of Computer Science, at the University of St. Andrews, St. Andrews, Scotland, where I lead the Functional Programming research group.

Build Your Own Lisp for Great Justice

Implementing a toy Lisp interpreter is practically a rite of passage for the budding computer scientist. This hallowed tradition is described in detail in "Lisp in Small Pieces," the seminal work on the making of Lisps, but everybody loves a tl;dr, so let's do the 40 minute executive summary.

We'll charge at high speed through the following topics, with Clojure code to follow along with as we go (because there's no better language for implementing a Lisp than another Lisp)

  1. Parsing: turning text files into ASTs
  2. Fundamental Lisp datatypes
  3. McCarthy's elementary functions.
  4. Evaluating Lisp code
  5. Lambdas and lexical scope
  6. Your friend, the state monad
  7. Beyond Lisp: pattern matching and type systems

When we're done, you'll be ready to go forth and fill the world with Lisps of all shapes, colours and Greenspun violations for Great Justice. Also, it'll be good fun.

Bodil Stokke

Bodil is a compulsive conference speaker in the fields of functional programming and internets technologies, and is a co-organiser of multiple developer conferences in Scandinavia and the UK, mostly because she’s still learning how to stop.

Data Science using Functional Programming

Functional Programming has had it's 15 minutes of fame - again. Now it's data's turn - again. Obviously the best way to stop this cycle is to merge the two. Let's put functional concepts into the database!

Reducing over relationships in graphs takes our data to the next level. Persisting that to the database saves us impedance mismatch and the overhead involved in the mapping. In this session we will talk about Neo4j and how we can use cool ideas from graph theory to get more value from our data.

Amanda Laucher

Amanda Laucher is currently working with Neo Technology, the company behind Neo4j. She is a language geek who is often found ranting about functional languages and great type systems.

Teaching an old dog new tricks: wrapping an imperative API in a functional one

Not so much "standing on the shoulders of giants" as skulking behind them with a notebook and a pen, this talk will demonstrate the construction of a functional Scala DSL to interact with a bespoke Java data source API using a real-life case study.

Implement trampolining IO! Traverse to your heart's content! Say "Applicative functor" like you know what it means! You know you want to.

Chris Marshall

Chris Marshall (@oxbow_lakes) is one of the 22 scala gold-badged users on StackOverflow, although he is unique in being the only undeserving recipient.

Railway Oriented Programming

Join Scott Wlaschin who will explain how to create robust real world applications in a clean functional way through the analogy of the railway!

Many examples in functional programming assume that you are always on the "happy path". But to create a robust real world application you must deal with validation, logging, network and service errors, and other annoyances. So, how do you handle all this in a clean functional way? This talk will provide a brief introduction to this topic, using a fun and easy-to-understand railway analogy.

Scott Wlaschin

Scott Wlaschin is a .NET developer, architect and author with over 20 years experience in enterprise development.

My other operating system is a Mirage

In this talk Anil introduces a different approach to building networked services which cleanly separates policy and mechanisms, an approach which results in an extremely efficient deployment model that outputs standalone kernels straight from OCaml source code

We are now used too being roused out of bed by news of the latest serious Internet security alert or major data leak. The software services we now use are tremendously complex, and mash together a complex spectrum of policy and mechanisms. I'll talk about a different approach to building networked services in this talk that cleanly separates both of these, and results in an extremely efficient deployment model that outputs standalone kernels straight from OCaml source code.

Hypervisors such as Xen or VMWare provide a flexible platform to host applications as a set of appliances, e.g., web servers or databases. Each appliance usually contains an OS kernel and userspace processes, within which applications access resources via APIs such as POSIX. It's on top of this layer that you typically write code in your functional programming language of choice.

Our Mirage operating system implements a radically different way of building these applications. Mirage supports the progressive specialisation of OCaml source code, and gradually replaces traditional OS components with type-safe libraries. This ultimately results in "unikernels": sealed, fixed-purpose images that run directly on the hypervisor without an intervening guest OS such as Linux.

Developers no longer need to become sysadmins, expert in the configuration of all manner of system components, to use cloud resources. At the same time, they can develop their code using their usual tools, only making the final push to the cloud once they are satisfied their code works. As they explicitly link in components that would normally be provided by the host OS, the resulting unikernels are also highly compact: facilities that are not used are simply not included in the resulting unikernel.

For example, the self-hosting Mirage web server image is less than a megabyte in size...

Anil Madhavapeddy

Anil is a Horizon Research Fellow at the University of Cambridge. He has worked in a variety of senior architecture, engineering, product management, sales and "whatever it takes" roles in industry

Park Bench Panel at #FPX

Join the #FPX Park Bench Panel to debate the day's talks with the experts and delegates. Have an opinion? Come share it and take the place of a panellist!

QuickChecking Riak

In this talk John Hugh's shows us how QuickCheck helped us to model Riak’s behaviour, improving understanding and revealing the occasional bug.

Riak is one of the new breed of no-SQL database management systems, which has begun to replace relational databases for some applications. Riak is a distributed key-value store, inspired by Amazon’s Dynamo, designed for applications where scalability, low latency and high availability are critical. Riak uses replication to provide fast access to data, even when multiple nodes or parts of the network fail. It supports concurrent access to the same data by multiple clients, even when the network is partitioned. All of this makes it very hard to test.

John Hughes

John Hughes is co-founder and CEO of Quviq AB, and the originator of Quviq QuickCheck, which is written in Erlang. He was also deeply involved with the design of Haskell from the start, and co-chaired the committee that defined the current languages.


Robert Pickering's Blog Post

Philip Wadler's Blog

Kevin Hammond's Website

Chris Marshall's SO Profile

Scott Wlaschin's Blog

Bodil Stokke's Blog

Amanda Laucher's Twitter Profile

Reddit Functional Programming Subreddit


Robert Pickering - While It's Compiling

Help spread the word

If you have a blog or site and would like to let others know about this conference, we really appreciate it! If you blog about the conference and email us the link, we'll return the favour and link back to you in our list of great community blogs.

The Skills Matter eXchange

Located just a five minute walk from Barbican and Old Street Stations and a 15 minute walk from Kings Cross and St Pancras Stations, the Skills Matter eXchange provides a great selection of event spaces with all the facilities you need for a vibrant, interactive and successful Tech Event.

How to contact Skills Matter

Local Hotels

We recommend the following hotels:

Please note that our company discounts vary between hotels and have individual terms and conditions and hence might not be available upon your booking.

Alternatively we find this site useful for booking hotels in London:

Fantastic space for your Tech event

Whether you are organising a hackathon, an (un)conference, a training course, product launch or meeting, our experienced event team loves to help you make your event stand out!

Fully equipped, with well working WIFI and projection facilities, and with AV, power points and white boards available in most of our space, the Skills Matter eXchange provides:

  • one auditorium, seating up to 125 people (theatre style)

  • two spacious event-, or training rooms, each seating up to 70 people theatre style or 25 people class room style

  • one bright training or meeting room, seating up to 14 class room style or 18 Board room style)

  • one training or meeting room, seating up to 8 people class room or Board room style.

  • two funky break-out areas serving complementary coffee & tea throughout your event.

How can we help organise your event?

We'd love to find out how we can help make your event stand out! Contact us with your requirements - and our experienced events team will start working with you, to make it happen!

Get in touch with us today!

  • Phone: +44 (0) 207 183 9040

  • Email: info@skillsmatter.com

  • Address: Skills Matter, 116-120 Goswell Road, London, EC1V 7DP


The Skills Matter eXchange

116-120 Goswell Road, London, EC1V 7DP, GB

View details, travel and nearby hotels

To discuss sponsorship opportunities please contact the team:

Thanks to our sponsors