Haskell eXchange 2021: Pro Track

Tuesday, 16th - Wednesday, 17th November, Online Conference

10 experts will be speaking. Starts at 12:00 PM BST (12:00 PM UTC)

Join us for the 10th annual Haskell eXchange, a 3‑day online conference with content selected by developers for developers.

Over these 2 "Pro Track" days, you'll hear the latest from Haskell thought leaders, connect with fellow Haskellers in breakout sessions, and learn new skills in practical, coding-based talks.

Don’t miss this opportunity to learn and share your skills with the world’s most vibrant Haskell gathering.

Book today for only £99


If you've heard of Haskell or Functional Programming but aren't sure where to start, our new free "Novice Track" day is the perfect no-pressure way to learn about Haskell.

Register Here

Haskell eXchange 2021

The 2021 Haskell eXchange will be an online conference hosted on the Hopin platform.

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 COVID‑19 pandemic, we have a vision of a community where knowledge sharing and skills transfer are not limited by physical barriers.

By hosting Haskell eXchange online in 2020, we were able to truly welcome a global community of Haskell enthusiasts and developers to the conference.

We are excited to be able to offer this opportunity again for 2021 and hope you can join us!

Explore Haskell eXchange 2021

Get involved, plan your conference, or start your learning today

Haskell eXchange 2021 programme

View the programme

Our 3-day online conference will feature experts and enthusiasts pushing the bounds of Haskell in both industry and academia.

We'll be announcing our first keynotes in early 2021, so stay tuned.

speakers coming soon
Haskell eXchange 2021 Call for Papers

Want to speak?

Would you like to deliver a talk at Haskell eXchange?

Our Call for Papers is open and we want to hear your proposals.

Submit a Talk

Haskell eXchange SkillsCast videos

Revisit 2020

View (or review) the 15 talks and sessions from Haskell eXchange 2020 in our library of SkillsCast videos.

Last year's conference featured memorable talks from the likes of Simon Peyton Jones, Mateusz Curylo, and Richard Eisenberg, plus the launch of the Haskell Foundation.

visit the library

Diversity Matters Scholarship

Skills Matter offers scholarships to people from underrepresented groups in tech who wouldn’t otherwise be able to attend.

If you believe you are a member of a group that is underrepresented within the tech community or at technical conferences we encourage you to apply.

Learn More

Program Committee

All of the talks at the Haskell eXchange are selected by our volunteer Program Committee which evaluates and selects which speakers and topics will be included in the conference program. This committee includes developers, practitioners and enthusiasts of all levels.

This year's Program Committee includes:

Excited? Share it!


Why You Should Consider Haskell for Your Next Production System

Haskell is a top choice for building production software systems. While Haskell does have a large surface area, with many concepts and syntax that will feel unfamiliar to programmers coming from other languages, it is unrivaled in its combination of developer productivity, code maintainability, software reliability, and performance.

In this talk I will cover some of the defining features of Haskell that make it an excellent, industrial-strength language that is well-suited for building commercial software. You'll learn why we consider it our first choice for new projects, and why you should too.

This session will be part of our free Haskell eXchange: Novice Track on 15 November 2021. If you've heard of Haskell or Functional Programming but aren't sure where to start, our new free "Novice Track" day is the perfect no-pressure way to learn about Haskell.

Christian Charukiewicz

Christian Charukiewicz is a Co-Founder and Partner at Foxhound Systems, a custom software development company with a focus on building fast, secure, and reliable software systems. Prior to founding Foxhound Systems, Christian was the CTO of a Chicago tech startup where he led a team of several engineers and drove the adoption of both Haskell and Elm as languages for building key components of the production system.

Christian has been using functional programming languages professionally since 2016, starting with Elm and then later moving on to Haskell. He is passionate about teaching and has mentored several team members with no prior functional programming experience to become proficient Haskell programmers.

Beyond tech and business, Christian is a cooking enthusiast, avid reader, hobbyist photographer, and enjoys seeking out and brewing unique varieties of coffee.

A tour of linear-base

The first GHC version with the LinearTypes language extension is released early this year. This extension allows using linear arrows, where a function can specify how many times it uses its parameter. This seemingly minor ability opens up the door to many new abstractions; including, but not limited to, safe resource handling, pure mutable collections, and even the ability to manipulate values that are not managed by the garbage collector. linear-base, the standard library for linearly-typed Haskell programs, provides a fair number of utilities making -XLinearTypes convenient and also implements some of these new abstractions.

There are many in-depth articles and talks about specific uses of linear-base, but this talk will provide a broader overview of what is possible with linear-base now; walking through the different areas of the library pointing out their practical use cases; but also what they are lacking and what is being discussed. I hope it will encourage more people to experiment with linear-base, take part in discussions and become contributors.

Utku Demir

Software Developer
Tweag I/O

An Overview of GHC's Constraint Solver

GHC's constraint solver is a notoriously difficult beast to understand, and there aren't many tools available to help us understand the process that GHC goes through while type-checking.

In this talk, we will give an overview of how GHC generates constraints in the process of type-checking, and how it goes about categorising them and solving them. In particular, we will cover:

  1. Wanted and Given constraints,
  2. GHC's classification of predicates,
  3. typeclass instance resolution,
  4. implication constraints and the recursive nature of constraint solving,
  5. how type-checking plugins fit in with this story.

Sam Derbyshire

In 2017, having completed my mathematics PhD in London (in the field of p-adic Hodge theory), I decided to go back to my roots in the French Pyrénées, to begin working on various Haskell projects, with a focus on graphics. I got to know Haskell's type system in the process, and decided to take things a step further this year: I begun working on GHC under the supervision of Richard Eisenberg, with a focus on type-checking plugins and representation polymorphism. Since then, I've started work at Well-Typed, and continue contributing to GHC.

Haskell in the Enterprise: A Report from in the Belly of the Whale

What is it like to bring Haskell to a large enterprise with an established culture? There are success stories for specialized teams, but what about the mainstream? We've been working in the trenches alongside enterprise developers doing Haskell for more than 3 years and have lots to report. This talk explores what it is like to use Haskell in an environment where the understanding and software engineering experience of developers is very mixed. Ranging from the Haskell language and the ecosystem around it, to how it has impacted the systems and people working with it, we will examine the journey from an introduction that took us into stormy seas and the vision of clear skies ahead.

Trevis Elser

Software Engineer
Flipstone Technology Partners, Inc.

Why and how the external STG interpreter is useful

The external STG interpreter is a from scratch implementation of the STG machine in Haskell. Currently it supports almost all GHC primops and RTS features. It can run real world Haskell programs that were compiled with GHC Whole Program Compiler (GHC-WPC). GHC-WPC is a GHC fork that exports the whole program STG IR.

The external STG interpreter is an excellent tool to study the runtime behaviour of Haskell programs, i.e. it can run/interpret GHC or Pandoc. The implementation of the interpreter is in plain simple Haskell, so it makes compiler backend and tooling development approachable for everyone. It already has a programmable debugger which supports step-by-step evaluation, breakpoints and execution region based inspection. It also can export the whole program memory state and call-graphs to files for further investigation. These features makes it easy to find a memory leak or to identify a performance bottleneck in a large real world Haskell application.


Csaba Hruska

Compiler Engineer

Multi-dimensional Arrays that Do Not Exist

The goal of this talk is to explain delayed arrays, that are available in massiv library, as well as their roles in fusion and parallelization of operations applied to multi-dimensional arrays.

Immutable arrays in Haskell come with great safety properties and provide opportunities for a variety of optimizations. However, without fusion most operations on arrays do not compose efficiently due to intermediate allocations. Delayed arrays provide us with a reliable fusion framework, which is fully controlled by the user and guided by the type checker.

Many operations on arrays are massively parallel, however the common Haskell technique of evaluating with pseq and relying on GHC's spark pool is not applicable to unboxed arrays because it relies on laziness. Combination of a custom scheduler and delayed arrays can help us with a solution, so we can benefit from multi-core parallelization.

Designing and Verifying Programs with Formal Specification

Specifications languages have demonstrated themselves as an effective tool for designing and reasoning about complex software systems by capturing a high-level description of the system behavior in temporal logic. Declarative specifications of the intent of a system also serve models that can be checked in a fully automatic way, giving engineers formal guarantees on the correctness of their designs according to their specifications.

In this talk, I will give an overview of Spectacle, a Haskell EDSL for writing formal specifications in the temporal logic of actions, and how specifications written in Spectacle can mechanically verify real-world Haskell programs.

Keynote: Provably correct, asymptotically efficient, higher-order reverse-mode automatic differentiation

Automatic differentiation is all the rage these days, largely because it is a key enabler for machine learning. But reverse-mode AD (the important kind) is a bit mind bending, and becomes much more so if you want reverse-mode AD for higher order programs (i.e. the kind we love).

In this talk I’ll explain what AD is, and how we can do it for higher order programs, using a series of simple steps that take us a simple-and-obviously-correct version to a weird-but-very-efficient one. At the end of the road we’ll find the Kmett/Pearlmuttter/Siskind ‘ad’ library in Hackage… but I hope we’ll see it with new eyes.

We are honoured to welcome back Simon Peyton Jones to the Haskell eXchange.

Since the very first Haskell eXchange in 2012, we've been lucky to have Simon join us each year to share his unique perspective on everything from front end features to join points , Linear Types, and pattern matching — not to mention last year's very special announcement of the Haskell Foundation.

Check out all of Simon's previous Haskell eXchange talks here.

Simon Peyton Jones

Senior Principal Researcher
Microsoft Research, Cambridge

Simon 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.

Keynote: Generating Programs from Types

Program synthesis is a promising approach to automating low-level aspects of programming by generating code from high-level declarative specifications. But what form should these specifications take? In this talk I will advocate for using types as input to program synthesis. Types are widely adopted by programmers, they can vary in expressiveness and capture both functional and non-functional properties, and finally, type checking is often fully automatic and compositional, which helps the synthesizer find the right program.

I will describe two type-driven program synthesizers we developed. The first one is Synquid, a synthesizer for recursive functional programs that uses expressive refinement types as a specification mechanism. The second one is Hoogle+, which relies on more mainstream Haskell types and generates code snippets by composing functions from Haskell libraries.

Nadia Polikarpova

Nadia Polikarpova is an assistant professor at UC San Diego, and a member of the Programming Systems group. She received her Ph.D. in Computer Science from ETH Zurich in 2014, and then spent a couple years as a postdoctoral researcher at MIT. Nadia's research interests are in program synthesis, program verification, and type systems. She is a 2020 Sloan Fellow, and a recipient of the 2020 NSF Career Award and the 2020 Intel Rising Stars Award.

Avoiding Quadratic Blow-up During Compilation

There are three main sources of of quadratic blow-up in the ghc core code generated during compilation. First, we cannot refer to or update a field of records without mentioning all the fields of that record, where it should be noted that type class dictionaries are also records. Second, lack of type level sharing results in a lot of duplication when using data types with constructors that reflect some kind of inductive structure. Third, type family reduction results in large type equality coercions.

In this talk we will take a closer look at each of these problems. We will see how the large-records library manages to circumvent all of these problems, but we will also discuss the principles involved in the hope that you can apply those in your own code. Although it would be good to tackle these problems at a more fundamental level, this talk focuses on how to deal with these problems with current-day ghc, not a hypothetical future one.

Edsko de Vries

Edsko has been using Haskell for nearly 20 years, and has been a professional Haskell consultant with Well-Typed for roughly half that time. He holds a PhD in advanced (substructural) type systems for pure functional languages from Trinity College, Dublin.

As a Well-Typed consultant, he has provided training across the world, from Johannesburg to Boston to Singapore. He has worked on a large variety of projects, both open source as well as closed source for specific clients. Some of the open source projects he has contributed to are Cloud Haskell, Hackage, the Hackage security library, ghc, Ziria (a DSL developed by Microsoft) and cabal. Some general purpose libraries he has (co)developed include generics-sop, nothunks, recover-rtti and large-records.

The last few years he has worked as a consultant with IOHK on the Cardano blockchain, where he was responsible for the overall architecture of the consensus layer, designed the hard fork combinator, and did research on formal specification of a crypto wallet and invented a novel coin selection algorithm.

Get Involved

The Haskell eXchange Call for Papers is now closed.

Thank you for your interest We would like to thank everyone who submitted a proposal.

Proposals are now being evaluated by our Program Committee. If you've submitted a talk you should be hearing from our Programming Team very shortly. Thank you for your submissions.

If you've missed the deadline, why not consider submitting to one of our other Call for Papers below.

Check Out Our Other CFPs

Become a sponsor of Haskell eXchange

Whether you're looking to attract talent to your team or accelerate adoption of your tools and products, sponsoring Haskell eXchange is a terrific way to support and connect with our global community of developers working with functional languages like Haskell.

We offer a variety of opportunities for continuous visibility and continuous engagement. Community is at the heart of all we do at Skills Matter, and we believe it is mutually beneficial to foster genuine connections between our members and truly innovative businesses.

Rather than a typical ad hoc event sponsorship, we’ll work with you to create bespoke engagement opportunities that benefit both your business and the Skills Matter community. Whether you’re looking to develop one-to-one relationships with our members, or to showcase your product and spread brand awareness, we’d love to find a way to create meaningful interactions between you and our community.

To discuss sponsorship opportunities please contact the team:


Hold tight, skillscasts coming soon!


Other Years

Thank you to our sponsors and partners