The amazing community-led content you’ve come to expect — in a brand new format!
Join us online for Haskell eXchange 2020, an event created for and by the Skills Matter community.
See and hear the latest developments from thought leaders in Haskell as you unlock all of your programming creativity. Leverage the functional strength of Haskell to help overcome real-world software challenges. Don’t miss this opportunity to learn and share your skills with the world’s most vibrant Haskell gathering.
Book today and save!
See and hear the latest developments from thought leaders in Haskell as you unlock all of your programming creativity. Leverage the functional strength of Haskell to help overcome real-world software challenges. Don’t miss this opportunity to learn and share your skills with the world’s most vibrant Haskell gathering.

This year’s Haskell eXchange will take place entirely online.
Featuring two days of expert-led talks plus breakout spaces for getting to know likeminded people from the international Haskell community.
At Skills Matter, we’ve chosen to see the events of the past year as a challenge to make our content and community more inclusive and accessible to all. Beyond the current COVID‑19 pandemic, we have a vision of a community where knowledge sharing and skills transfer are not limited by physical barriers.
We are excited about the opportunity to truly welcome the global Haskell community to this year’s Haskell eXchange. We hope to see you there!
Who's going to be there?
This year's speakers include:
-
Joachim Breitnero
-
Mateusz Curylo
-
Facundo Domínguez
-
Michał Gajda
-
Simon Peyton Jones
-
Veronika Romashkina
-
Andrzej Rybczak
-
Marcin Rzeźnicki
-
Isaac Shapira
-
Arnaud Spiwack
Plus lightning talks by:
Explore Haskell eXchange 2020
Get involved, plan your conference, or start your learning today

View the programme
We've begun to announce our lineup in Haskell eXchange speakers. We'll be announcing speakers in the lead up to the event, but take a look at who we've announced so far.
view programme
Want to speak?
The Haskell eXchange Call for Papers is now closed.
Thank you to everyone who submitted.

Revisit Haskell eXchange 2019
View (or review) the more than 35 talks and sessions from last year's conference in our library of SkillsCast videos.
visit the libraryExcited? Share it!
Day 1: Haskell eXchange 2020
All times in UTC
Track | All times in UTC | |||
12:00
Invalid Time
Invalid Time
|
Opening Remarks |
|||
12:05
Invalid Time
Invalid Time
|
Simon Peyton Jones returns to Haskell eXchange to announce the launch of the Haskell Foundation, an independent, non-profit organisation dedicated to broadening the adoption of Haskell, by supporting its ecosystem of tools, libraries, education, and research. Do join us to hear about the plans so far, and to help shape what the Foundation becomes. There will be an extended Q&A as part of the session. To ensure as many people as possible hear about this important announcement, this Opening Keynote will also be live-streamed on YouTube. Watch the stream for free here.
nonprofit-technology
haskell
About the speaker...Simon Peyton JonesSimon Peyton Jones, MA, MBCS, CEng, graduated from Trinity College Cambridge in 1980. Simon was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages. After two years in industry, he spent seven years as a lecturer at University College London, and nine years as a professor at Glasgow University before moving to Microsoft Research (Cambridge) in 1998. His main research interest is in functional programming languages, their implementation, and their application. He has led a succession of research projects focused around the design and implementation of production-quality functional-language systems for both uniprocessors and parallel machines. More generally, he is interested in language design, rich type systems, software component architectures, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation -- that's one reason he loves functional programming so much. |
|||
12:55
Invalid Time
Invalid Time
|
Break |
|||
13:00
Invalid Time
Invalid Time
|
Winter is a Haskell port of the reference implementation of WebAssembly, and I wanted to use it in one of my projects. It runs small examples just fine, but once they get a bit larger, it was just too slow. So I pulled out the profiler and went hunting for low-hanging fruit, and also less low-hanging fruit, plucking 7 in total:
|
|||
13:35
Invalid Time
Invalid Time
|
Break |
|||
13:45
Invalid Time
Invalid Time
|
Maybe you've got yourself a Kubernetes cluster for your Haskell web servers, are considering getting yourself some Haskell for your Kubernetes cluster, or already have a Kubernetes cluster smashed by shoddy Haskell deployments which were never performance tested? I would like to take you on an adventure with Haskell on a Minikube to show you some basic facts about interactions among Docker, Kubernetes and Haskell runtimes. I will introduce you to cheap and cheerful performance testing with the apib tool, and show you places you can go by applying and not applying Kubernetes and Haskell best performance practices. Have you ever wondered whatever Haskell is faster than Node.js? Did you lose sleep over choosing threaded or non-threaded runtime, determining how many threads to give to your Haskell runtime? Would you believe that Docker makes your app faster, occasionally? Does setting up Half a CPU requests and limits on Kubernetes remind you of the Judgment of Solomon? Let us smash out of doubts pounding Haskell on a Minikube.
haskell
runtimes
kubernetes
microservice
About the speaker...Mateusz CuryloThey have a funky blog about philosophy and software development, which can hurt your eyes: www.oxhouseclub.com. |
|||
14:20
Invalid Time
Invalid Time
|
Break |
|||
14:25
Invalid Time
Invalid Time
|
This talk will discuss how to apply the upcoming GHC language extension LinearTypes to manage references to values in a foreign language. Our case study will be inline-java, a library that allows you to embed Java code in Haskell modules and integrates the JVM and the Haskell runtimes. Managing references to objects in the Java heap has remained an error-prone task. The programmer is responsible for deleting these references in a timely fashion. Delete too soon, and we get use-after-free errors. Delete too late, and we get intermittent OutOfMemory errors from the JVM. Forget to delete a few of them, and the memory of your application will grow steadily over time without an obvious cause. We will show how linear types involve the compiler in checking that a program does a timely disposal of references to foreign values, effectively eliminating the most common bugs related to it.
java
haskell
linear-types
memory-management
About the speaker...Facundo DomínguezFacundo Domínguez is a software engineer at Tweag. He has been using Haskell in industry during the last two decades, and he is a long-time contributor to Haskell libraries and GHC. Of late, he has been contributing to Liquid Haskell to make it easier and faster to use until it takes over the world. |
|||
15:00
Invalid Time
Invalid Time
|
Break |
|||
15:30
Invalid Time
Invalid Time
|
After exposing a background of generating API bindings for the multicloud services, we use this case study to present our rules of thumb for agile data analytics development. Michał presents examples with Haskell code and shows how best practices of functional programming solve practical problems of data analytics case-by-case. All cases are naturally motivated and embedded in this case study, but are illustrated with a short Haskell code sample. The material is aimed at intermediate and expert Haskellers that want to reuse our techniques for other data analytics pipelines, or beginners who want to quickly learn the best monad to use when analysing thousands and millions of records on the input.
haskell
data-analytics
case-study
python
api-binding
multicloud
About the speaker...Michał J. GajdaMichał J Gajda is a bioinformatician turned data scientist, turned banker, turned software startup founder. He loves to mix the best of science and programming methodology into tasty dishes of ultimate utility. |
|||
16:05
Invalid Time
Invalid Time
|
Break |
|||
16:10
Invalid Time
Invalid Time
|
Haskell is known for its clunky record syntax and common knowledge is that "lenses and prisms help", but the The talk will focus on the Andrzej Rybczak will discuss: lens library (yet matches its power) andHe'll also discuss how |
|||
16:45
Invalid Time
Invalid Time
|
Break |
|||
16:50
Invalid Time
Invalid Time
|
Social Event: To Be Announced |
|||
18:20
Invalid Time
Invalid Time
|
End of Day 1 — See you tomorrow! |
Day 2: Haskell eXchange 2020
All times in UTC
Track | All times in UTC | |||
12:00
Invalid Time
Invalid Time
|
Opening Remarks: Welcome to Day 2 of Haskell eXchange 2020 |
|||
12:05
Invalid Time
Invalid Time
|
When GHC processes a Haskell program, it must perform type inference. This process includes both determining the types for definitions that lack type signatures and figuring out how polymorphic functions should be specialized at a particular usage site. To figure it all out, GHC looks at the Haskell program, generating constraints like "the type of x must match the expected argument type of f" and "the type of y must have a Show instance". Then, GHC must find a choice of types that satisfy all the constraints. After a brief introduction to this generate-constraints-and-solve approach, this example-driven talk focuses on the constraint solver, explaining how it works, and showcases two large simplifications currently under way. You'll get a glimpse of how GHC works under the hood, learn why it's so hard to get good error messages, and get a sense for the kinds of problems that exist in GHC's type checker. This talk is also essential background information for anyone interested in writing type-checker plugins, though plugins will not be a focus of the talk. The audience should be able to understand simple Haskell programs; no advanced Haskell needed. |
|||
12:45
Invalid Time
Invalid Time
|
Break |
|||
12:50
Invalid Time
Invalid Time
|
The idea for this talk came to me when I was looking for a Haskell library for JWT. I wasn't completely satisfied with interfaces like It turned out that I had to explore many things that I wanted to share with other Haskell enthusiasts:
I think that this material can serve well as a cheat-sheet. In the course of this talk, I'll try to present how these (sometimes not widely known) techniques can be applied to solve well-defined domain-modelling problems. But more importantly, I'll try to convince the audience that seemingly “complicated" Haskell is not so difficult at all, and can bring tangible benefits. Despite what SimpleHaskell advocates say: the library turns out to be many times faster than contenders, while giving the user a more enjoyable, less error-prone interface to work with.
haskell
domain-modelling
ghc-rewrite
datakinds
ffi
library-design
About the speaker...Marcin RzeźnickiMarcin Rzeźnicki is a programmer with close to 20 years of professional experience, mostly filled with immense displeasure of working in C#, Java or Ruby until I witnessed the advent of FP in the industry and regained the knowledge I'd lost leaving academia halls. Embracing Scala helped me to become born-again programmer, type system theorist and category theory hobbyist. I gave talks at meetups and conferences on subjects like: Kleisli arrows, dependent types and Free monads. I left Scala to devote myself to a clearly superior language: Haskell. |
|||
13:25
Invalid Time
Invalid Time
|
Break |
|||
13:40
Invalid Time
Invalid Time
|
Rhythmr is an interactive system, implemented in Haskell, for creating ear-pleasing rhythm loops from randomly-acquired audio files. The user iterates through an unending stream of randomly combined music loops, swiping left or right on each one to indicate whether they like it or not. Rhythmr derives a model of which combinations sound good based on user input, and from that, produces a complete song by inserting the chosen combinations into a predefined score. I’m a recent Haskell convert, and Rhythmr is the first useful application I’ve created with it. It required my learning a lot of Haskell skills: audio, graphics, profiling, optimization, user interactivity, and more. Haskell was crucial to the success of this project, for it allows efficient construction of reliable software, and pure state handling made implementing features like ‘undo’ very easy. I was able to prototype many variations of the algorithm and interface in order to produce a usable tool. |
|||
13:55
Invalid Time
Invalid Time
|
Break |
|||
14:00
Invalid Time
Invalid Time
|
Shpadoinkle is a programming model for UI development, oriented around simplicity, performance, and ergonomics. We will build a small application in Shpadoinkle from scratch. This will be an application just big enough to demonstrate how simple concepts compose gracefully into larger structures. We will discuss how to formalize separation of concerns and define what it means to be a UI component. |
|||
14:15
Invalid Time
Invalid Time
|
Break |
|||
14:20
Invalid Time
Invalid Time
|
Haskell is known for its strong static typing but there are even stronger typing disciplines! Refinement types are types 'annotated' with 'predicates'. Dependent types allow terms to appear in types. Both of these disciplines allow the programmer to be more specific. A classic example is defining a type of lists of length 'n'. Both of these disciplines allow the programmer to prove that some function is valid on all possible inputs, a much stronger proof of correctness than a battery of tests. How are these two disciplines different? How do they work? How can you experiment with them? I'll answer these questions and demonstrate with examples in A Brief Introduction to Refinement Types and Dependent Types. You can also view the slides from this talk here. |
|||
14:35
Invalid Time
Invalid Time
|
Break |
|||
15:10
Invalid Time
Invalid Time
|
This talk discusses how to implement proper property testing in Haskell. It moves way beyond the classic toy examples and examined real-world scenarios. It takes a deep-dive into how to make property tests interact with web services or database systems. It also explains how to use custom generators and testing combinators. Other topics discussed are as follows:
|
|||
15:45
Invalid Time
Invalid Time
|
Break |
|||
15:50
Invalid Time
Invalid Time
|
Most languages are strict. Haskell is very much the odd one out there. So, it is not surprising that programmers in strict language sneer at Haskell's laziness, nor that Haskell programmers feel compelled to defend this choice. But because of the adversarial nature of this debate, it ends up with cheap slogans such as “strict languages are more efficient” or “lazy languages compose better”. This doesn't tend to be very enlightening. After all, the most likely answer (if maybe unsatisfactory) is: it depends. The choice between strictness and laziness is, at the end of the day, as most things in engineering, a trade-off. And to make an informed choice between these two technologies, we need to know what the costs and benefits of each are. My goal is to provide tools to make such an informed decision by sharing, based on my experience as a programmer in both lazy languages and strict languages, the strengths and weaknesses of both paradigms. If you’re looking for me to tell you which is best, you will be disappointed. On the plus side, there will definitely be some production horror stories. This talk should be of interest to Haskell engineers of all levels, people who are only learning Haskell, and those who would like to improve as a mentor or educator either in your company or generally. |
|||
16:30
Invalid Time
Invalid Time
|
Break |
|||
16:40
Invalid Time
Invalid Time
|
In the typed functional programming communities, there is much talk about "reasoning with types". But rarely is this elaborated into something concrete. Just how can we extract tangible information from types beyond playing mere type tetris? The secret sauce is called parametricity, first described by John C. Reynolds, and later applied to Haskell by Philip Wadler in his influential paper "Theorems for free!".
haskell
parametricity
About the speaker...Lars HupelLars Hupel is a consultant in Munich, Germany. They are known as one of the founders of the Typelevel initiative which is dedicated to providing principled, type-driven Scala libraries in a friendly, welcoming environment. A frequent conference speaker, they are active in the open source community, particularly in Scala. They also enjoy programming in and talking about Haskell, TypeScript, Prolog, and Rust. Previously, they were a PhD student at TU München in the field of logic and verification. |
|||
17:15
Invalid Time
Invalid Time
|
Break |
|||
17:20
Invalid Time
Invalid Time
|
Smallpt is a tiny ray-tracer in C that's been ported to many languages due to its size and simplicity. Unfortunately, the Haskell version is slow: 5-8x slowdown on a naive translation. In this talk, we are going to first port it to Haskell, and then make it fast, by using GHC pragmas, inspecting Core, reading GHC's profiling information, and reasoning about Haskell's execution model. Attendees will learn how to tune a program that's neither too small (a micro-benchmark) nor too large (a monolith): This application is small enough to be digested, while large enough to exhibit "interesting" performance optimisations. It's a good case study to get one’s feet wet into Haskell optimisation. |
|||
18:00
Invalid Time
Invalid Time
|
Wrap Up: Thank you for attending Haskell eXchange 2020! |
-
The Launch of the Haskell Foundation
Featuring Simon Peyton Jones
In this very special talk Simon Peyton Jones will announce the launch of the Haskell Foundation, an independent, non-profit organisation dedicated to broadening the adoption of Haskell, by supporting its ecosystem of tools, libraries, education, and research.
nonprofit-technology haskell -
Winter is Coming – Even Faster
Featuring Joachim Breitner
Winter is a WebAssembly interpreter. It was too slow for my use-case, so this is the tale of how I made it 700 faster, with 7 different optimizations.
haskell optimisation webassembly -
Smash you some Haskell on a Minikube
Featuring Mateusz Curylo
To get good performance for your Haskell microservice on Kubernetes you need the correct deployment, compiler and runtime configuration. Rational thinking is not good enough here, so let us empirically test it out.
haskell runtimes kubernetes microservice -
Typecheck Your Memory Management with Linear Types
Featuring Facundo Domínguez
Join Facundo Domínguez as he discusses using the new language extension LinearTypes to safely manage references to foreign objects/values when integrating Haskell with other languages.
java haskell linear-types memory-management -
Agile Functional Data Pipeline in Haskell: A Case Study of Multicloud API Binding
Featuring Michał J. Gajda
In this case study, Michał discusses making a data pipeline for multicloud API bindings in Haskell for analysis and Python for scraping. He'll introduce a few rules settled on along the way that allow for blinding fast development of agile data analytics.
haskell data-analytics case-study python api-binding multicloud -
User Friendly Optics
Featuring Andrzej Rybczak
In this talk, Andrzej presents the
haskell optics libraryoptics
library and discusses some key differences from thelens
library that lead to better user experience. He'll also share how to use it to solve the "Haskell record problem" in a satisfactory way. -
Simplifying Constraint Solving in GHC
Featuring Richard Eisenberg
This example-driven talk focuses on GHC constraint solver. You'll get a glimpse of how GHC works under the hood, learn why it's so hard to get good error messages, and get a sense for the kinds of problems that exist in GHC's type checker.
haskell type-checking -
Building a Web Library Using Super Hard Haskell
Featuring Marcin Rzeźnicki
Have you heard of the Simple Haskell initiative? They've got a point, right? Safety, simplicity, Haskell'98 with maybe some benign extensions. You better hear what you are missing and I'll tell you — you're missing a lot
haskell domain-modelling ghc-rewrite datakinds ffi library-design -
Performance Proposal: Rhythmr, Or Semi-Automated Audio Loops (Lightning Talk)
Featuring Greg Travis
Rhythmr is an interactive tool to create music from randomly selected audio loops. It presents combinations of loops, and you swipe left or right. As you continue, it improves its guesses to match your preferences.
haskell user-interaction optimization profiling graphics audio -
Shpadoinkle User Interface Programming (Lightning Talk)
Featuring Isaac Shapira
Shpadoinkle is the simplest, easiest way to write a performant, maintainable web UI in Haskell. Learn how our growing community and ecosystem of tools can help you deliver exceptional user experiences.
haskell web ui -
Stronger Types! : A Brief Introduction to Refinement Types and Dependent Types (Lightning Talk)
Featuring Eric Bond
Haskell is known for its strong static typing but there are even stronger typing disciplines: Refinement Types and Dependent Types. In this lightning talk Eric Bond offers a brief introduction to both.
haskell dependent-types refinement-types -
Practical Property Testing
Featuring Tom Sydney Kerckhove
In this talk Tom Sydney Kerckhove discusses how to implement proper property testing in Haskell. It moves way beyond the classic toy examples and examined real-world scenarios, taking a deep-dive into how to make property tests interact with web services or database systems.
haskell testing -
2
Smallpt-hs: Porting a Raytracer's Performance to Haskell
Featuring davean scies and Siddharth Bhat
Let's tune a Haskell program to be as fast as C! (1) Begin with smallpt, a 100 line C raytracer that we naively port to Haskell. (2) balk at the 5x performance slowdown. (3) Roll up our sleeves. (4) Performance parity!
haskell raytracer porting -
Comparing Strict and Lazy
Featuring Arnaud Spiwack
Strict and lazy languages are often pitted against each other but rarely honestly compared. Let's take a step back from the slogans and examine the trade-offs between lazy and strict. Not which is best: how they compare.
haskell strict lazy -
Theorems for Free
Featuring Lars Hupel
We can extract a lot of information from type signatures. But how does it work? In this talk Lars Hupel will revisit Philip Wadler's influential (and very cool) paper "Theorems for free!".
haskell parametricity
-
Haskell eXchange 2022: Online Conference
Two days - Online Conference
We're thrilled to once again welcome the global Haskell community to join the Haskell eXchange conference via our virtual conference platform, where across 2 jam-packed days, you'll connect with like-minded Haskellers and learn new skills through practical, coding-based sessions.
software-development haskell ghc functional-programming -
Haskell eXchange 2022: In-Person Conference
Two days in London
We're thrilled to once again welcome the Haskell community to CodeNode in London, where you'll meet hundreds of like-minded Haskellers face-to-face, discuss new technologies, and learn new skills through practical, coding-based sessions, as we explore what's new and what's next in...
software-development haskell -
Haskell eXchange 2022: Novice Track
One day - Online Conference
If you've heard of Haskell, but aren't sure where to begin, join us online 7 December for a day of free talks exploring the fundamentals of functional programming, the basics of Haskell, and answers to why teams use this increasingly popular language!
software-development functional-programming beginner haskell -
Haskell eXchange 2021: Pro Track
Two days - Online Conference
Join us for the 10th annual Haskell eXchange! Hear the latest from Haskell thought leaders, while you connect with fellow Haskellers in breakout sessions, and learn new skills in practical, coding-based talks.
functional haskell ghc #functional-programming -
Haskell eXchange 2021: Novice Track
One day - Online Conference
This year at Haskell eXchange we've added a special "Novice Track" day for anyone who may have heard of Haskell, but isn't quite sure where to begin. Join us for a day of free talks exploring the fundamentals of functional programming, the basics of Haskell, and real-world uses...
haskell functional-programming -
Haskell eXchange 2019
Two days in London
Back for its eighth instalment, Haskell eXchange is an annual conference created for, and by, the Skills Matter community. An opportunity for Haskellers to meet, learn and share skills, discover emerging technologies and help evolve the Haskell ecosystem. Everyone is welcome to join, whether you...
nix monads cryptocurrency fp ghc haskell functional-programming types -
Haskell eXchange 2018
Two days in London
Back for a seventh installment, the Haskell eXchange is an annual conference created for and by the Skills Matter community. An opportunity for Haskellers to meet, learn and share skills, discover emerging technologies and help evolve the Haskell ecosystem. Everyone is welcome to join, whether...
haskell haskellx types functional-programming -
HaskellX2gether Community Weekend
Two days in London
Following up on the Haskell eXchange, we will hold a two-day Haskell eXchange Community Weekend - HaskellX2gether. Everyone is welcome, beginners and experts alike, and not just participants at the Haskell eXchange, but everyone who would like to participate in a two-day coding festival.
haskell haskellx hackathon hack functional-programming -
Haskell eXchange 2017
Two days in London
Back for a sixth installment, the Haskell eXchange is an annual conference created for and by the Skills Matter community. An opportunity for Haskellers to meet, learn and share skills, discover emerging technologies and help evolve the Haskell ecosystem. Everyone is welcome to join, whether you...
haskell haskellx types functional-programming -
Haskell eXchange 2016
Two days in London
In its fifth year, the Haskell eXchange is an annual conference created for and by the Skills Matter community. An opportunity for Haskellers to meet, learn and share skills, discover emerging technologies and help evolve the Haskell ecosystem. Everyone is welcome to join, whether you are an...
types monads functional-programming haskell haskellx -
Haskell Infrastructure Hackathon 2015
Two days in London
Following up on the Haskell eXchange, we will hold a two-day Haskell Hackathon at Pivotal. Everyone is welcome, beginners and experts alike, and not just participants at the Haskell eXchange, but everyone who would like to participate in a two-day coding festival.
haskell haskellx functional-programming monads types -
Haskell eXchange 2015
Two days in London
Want to learn about the latest innovations in Haskell? Join 100+ functional programmers to learn modern approaches as well as how Haskell's application in enterprise is changing the way our industry tackles complex engineering problems.
haskellx haskell functional-programming monads types -
Haskell eXchange 2014
One day in London
Want to join the dots of the Haskell landscape? Eager to hear from those driving innovations in Haskell in various industry and academic fields? Then join Haskell experts and enthusiasts this October for London's premier Haskell conference.
haskell functional-programming monads types -
Haskell eXchange 2013
One day in London
The second edition of the Haskell eXchange returns to Skills Matter HQ on October 9th. This unique and dedicated Haskell event will pull together Haskell enthusiasts, developers, and thought leaders across Europe.
haskell clojure akka functional-programming haskellx -
Haskell eXchange 2012
One day in London
Skills Matter is proud to announce the first annual Haskell eXchange. While we're working with Neil Mitchell to put together a fantastic programme for you, we can already tell you that Simon Peyton-Jones is confirmed to make a keynote!
For updates on the latest presentations and speakers,...
haskell