
A 2 day conference on everything Haskell
We are very proud to announce that Simon Peyton Jones, Philip Wadler and Gabriele Keller will be sharing a Keynote talk at Haskell eXchange 2019!
We're looking forward to learning from these Haskell eXchange experts and we hope you are too! Check out the latest updates to the line-up on our programme for all updates on our line-up!
View all confirmed talks so far →Call For Papers is now CLOSED
Thanks for submitting a proposal, the response's been overwhelming and we are currently working on selecting talks. Click here to stay up to date and find out more on speakers as we'll start publishing the line-up very soon!
Haskell eXchange 2019 Diversity Scholarship Plan
The Haskell eXchange 2019 Diversity Scholarship Plan is now closed, thank you to all those who applied, and please feel free to apply again next year.
Volunteer
Get a free ticket in exchange for some help setting up the conference and a few hours on the days of the conference.
More information here
Code of Conduct
We are committed to providing a friendly, safe and welcoming environment for all. Learn more in our Code of Conduct.
Excited? Share it!
Day 1: Thursday 10th October
Don't miss these amazing talks!
Track | CTRL | ALT/TAB | CMD | |||||||||
08:30
Invalid Time
Invalid Time
|
Registration & Breakfast |
|||||||||||
09:00
Invalid Time
Invalid Time
|
Welcome to Haskell eXchange 2019 - Day 1 |
|||||||||||
09:15
Invalid Time
Invalid Time
|
KEYNOTE
How hard can it be to spot missing or overlapping patterns in a Haskell function definition? Surely it’s the least we can expect from a decent compiler? But when you mix in GADTs, pattern guards, view patterns, data families, strict data constructors, and pattern synonyms, matters get surprisingly tricky. In a 2015 paper “GADTs meet their match” they explored a nice, modular account of pattern-match checking that addresses many of these tricky points. Alas, GHC’s implementation of that paper has proved less than satisfactory: it can be terribly slow, and misses cases that programmers think look obvious. So Simon and colleague Sebastian Graf have been radically refactoring the implementation. In this talk Simon will give lots of tricky examples of pattern matching, describe how to think about coverage and overlap checking, and reflect on how thier new refactored implementation works.
pattern-matching
refactored-implementation
gadt
ghc
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. |
|||||||||||
10:15
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
10:30
Invalid Time
Invalid Time
|
However, things could still be improved. Type-level programs are notoriously tricky to write, partly because the type language is first-order, meaning that our old friends like the maps and folds cannot be expressed. In this talk, Csongor will walk through the type-level programming facilities of modern Haskell, and present a new GHC extension which enables higher-order type programming: UnsaturatedTypeFamilies. This talk is based on the ICFP 2019 paper Higher-Order Type-Level Programming in Haskell and is aimed at people who are curious about how deep the rabbit hole goes if we do enable every possible language extension under the sun.
type-level-programming
haskell
ghc
types
About the speaker...Csongor KissHe is the author of the generic-lens library and is a passionate Stepmania player. |
In this talk, Marco shows you what happens when you take things a little bit too far. You don't have to use every GHC feature under the sun. There's a lot you can do at the type level, but is it worth it? Where do you draw the line? What has he learned? Stick to Simple Haskell! |
In this talk, Artem will aim to help listeners build a basic understanding of linking by means of examples, give an overview of the GHC's linker code, and describe current challenges and possible improvements. A level of familiarity with C and ASM is helpful, but not required. This is a follow-up to some work Artem has done around RTS linker in GHC: https://gitlab.haskell.org/ghc/ghc/merge_requests/348/diffs Related materials can also be found in this blog post |
|||||||||
11:15
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
11:30
Invalid Time
Invalid Time
|
In this talk, Andrey will explore a general framework in which to understand and compare build systems, in a way that is both abstract (omitting incidental detail) and yet precise (implemented as Haskell code). He will use the framework to describe the essence of a variety of different real-life build systems, including Make, Shake, Bazel, Dune and Nix. The framework is open-source and available at github.com/snowleopard/build. This talk is based on the ICFP 2018 paper with the same title that received the ICFP Distinguished Paper Award, and will also cover more recent work, including so-called selective functors. This talk is suitable for people comfortable with the notions of monads and applicative functors.
shake
bazel
dune
nix
haskell
build-systems
About the speaker...Andrey MokhovIn the last few years, Andrey was working on build systems: he is one of the developers of Hadrian, a new build system for the Glasgow Haskell Compiler, and is a co-author of the paper "Build Systems à la Carte" that provides executable models of popular build systems such as Make, Shake and Bazel. After a long academic career, Andrey has recently joined the Tools and Compilers team at Jane Street London, where he works on the OCaml build system Dune. |
However, when most people first come into contact with lenses, they are anything but easy and smooth. To begin with, there are so many implementations. Van Laarhoven lenses, profunctor optics, and so on. And even if you figure out which one to use, you run into the next problem: Reading the API on hackage or loading the package up in your repl often just feels like having your face rammed into a wall of random letters. This talk will provide, not a detailed guide to the inner workings of any particular implementation of lenses, but rather an overview of the broad ideas and motivating examples for them. What is the problem? And how does the framework of lenses give us a language to talk about that problem? By the end of the talk, the ambition is that the listener will feel empowered to take another look at that lens library they've been meaning to, or even to give it a first try if they haven't before. If all goes well, you will agree that lenses aren't that scary after all!
optics
lenses
haskell
About the speaker...Sara FranssonSometimes the two worlds collide (and sometimes they make them collide by banging them together). After having taken several trips back and forth between academia and industry in an attempt to balance their love for both the pure abstract theory and the practice of leveraging it to solve concrete problems, they have landed in the core banking domain at Klarna. There they are making themselves busy spreading the gospel of functional programming and type theory. When they're not busy building a bank or trying to find time for studying, they enjoy cooking and eating tasty vegan food and playing Tetris as fast as possible. |
Michał will present a tutorial on how to roll your own data ingestion pipeline in fifteen minutes. Then he will dive into a bit of methodology so that the thirsty has a map of materials to look further into.
data
haskell
parsing
csv
etl
metadata
ingest
xml
json
bigdata
analytics
datascience
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. |
|||||||||
12:15
Invalid Time
Invalid Time
|
Lunch |
|||||||||||
13:15
Invalid Time
Invalid Time
|
|
Things become more complicated when you consider processes that can take a probabilistic amount of time or even fail with a certain probability. How do such processes compose sequentially or in parallel? An example of this is sending a message in a network. Transmission time follows a (continuous) probability distribution, and it is even possible that the message will never reach its receiver. In this presentation, Lars will extend the standard notion of probability monad to include a notion of probabilistic duration, which will enable you to model things like communication in a network of nodes. Lars will answer questions like: "How long will it take a signal to reach each node in the network?" and "How does the answer depend on network topology?" |
All codebases of any non-trivial size should use guaranteed correct build systems that have a global view of the dependency graph across all languages, a global read/write build cache populated by continuous integration (CI) and developers' laptops, and feature instant rebuilds when switching between branches. The ideal CI setup rebuilds all commits no matter the size in mere minutes using multiple workers in parallel, runs only those tests that were touched by a code a change, and creates build artifacts that are downloaded upon initial checkout and initial build of the code. In this talk, Mathieu will show how to achieve that for traditionally slow-to-build Haskell, using Cabal, Stack, Nix or Bazel, and also by gainfully combining all four. Links:
bazel
build-systems
haskell
ghc
codebases
About the speaker...Mathieu BoespflugSome time before that, after having learned Haskell from the venerable old and new guard at the University of York, he wrote Haskell and Ocaml at various academic institutions, focusing on compiler technologies for dependent types during his PhD and later type safe metaprogramming for both proofs and programs. He's the main author of 30+ packages on Hackage, including language interop and Haskell support in Bazel. |
|||||||||
14:00
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
14:15
Invalid Time
Invalid Time
|
Day 1, 10 Oct starts 14:15 (CTRL)
Workshop: Nix & Haskell: From Hello World To Deploying To Production
|
Day 1, 10 Oct starts 14:15 (ALT/TAB)
Workshop: Build a command line tool in Haskell
|
The interpreter is a full application, with a parser, type-checker, and evaluator. It serves both as an example of how to use these features and as an existence proof that Haskell is well-suited for fancy-typed programs. Note: This talk was prepared as a talk, not a workshop. While I very much welcome questions as we go, there is not an explicitly interactive component. |
|||||||||
15:45
Invalid Time
Invalid Time
|
Beer Break |
|||||||||||
16:00
Invalid Time
Invalid Time
|
KEYNOTE
|
|||||||||||
17:00
Invalid Time
Invalid Time
|
Haskell eXchange Party! |
|||||||||||
22:00
Invalid Time
Invalid Time
|
End of Haskell eXchange 2019 Day 1 - See you tomorrow! |
Day 2: Friday 11th October
Don't miss these amazing talks!
Track | CTRL | ALT/TAB | CMD | |||||||||
08:30
Invalid Time
Invalid Time
|
Registration & Breakfast |
|||||||||||
09:00
Invalid Time
Invalid Time
|
Welcome to Haskell eXchange 2019 - Day 2 |
|||||||||||
09:15
Invalid Time
Invalid Time
|
KEYNOTE
The doctrine of Propositions as Types asserts that propositions correspond to types, proofs to programs, and simplification of proofs to evaluation of programs. The proof of a conjunction is a pair, the proof of a disjunction is a case expression, and the proof of an implication is a lambda expression. Proof by induction is just programming by recursion. Dependently-typed programming languages, such as Agda, exploit this pun. To prove properties of programming languages in Agda, all we need do is program a description of those languages Agda. Finding an abstruse mathematical proof becomes as simple and as fun as hacking a program. This talk introduces Programming Language Foundations in Agda, a new textbook that is also an executable Agda script---and also explains the role Agda is playing in IOHK's new cryptocurrency. The textbook can be found here.
functional-programming
types
propositions
agda
haskell
About the speaker...Philip WadlerPhilip is Professor of Theoretical Computer Science at the University of Edinburgh. He is an ACM Fellow and a Fellow of the Royal Society of Edinburgh, past chair of ACM SIGPLAN, and past holder of a Royal Society-Wolfson Research Merit Fellowship. Previously, he worked or studied at Stanford, Xerox Parc, CMU, Oxford, Chalmers, Glasgow, Bell Labs, and Avaya Labs, and visited as a guest professor in Copenhagen, Sydney, and Paris. He has an h-index of 61, with more than 18,000 citations to his work according to Google Scholar. He is a winner of the POPL Most Influential Paper Award, has contributed to the designs of Haskell, Java, and XQuery, and is a co-author of Introduction to Functional Programming (Prentice Hall, 1988), XQuery from the Experts (Addison Wesley, 2004) and Generics and Collections in Java (O'Reilly, 2006). He has delivered invited talks in locations ranging from Aizu to Zurich. |
|||||||||||
10:15
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
10:30
Invalid Time
Invalid Time
|
This experience report presents a verification approach designed to help spacecraft engineers reduce the effort required for formal verification of low-level control programs executed on custom hardware. You implement the semantics of a custom industrial instruction-set architecture in Haskell as an EDSL and perform symbolic execution of machine code programs to generate verification conditions which are later discharged with an SMT solver. Using this methodology, you verify the functional correctness of programs and perform worst-case execution time analysis. |
Among examples are both Kleisli categories and and the pure category This talk will be based on his (on going) work on the free-category package published on Hackage. https://hackage.haskell.org/package/free-category |
The talk will present:
(https://github.com/tweag/porcupine) |
|||||||||
11:15
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
11:30
Invalid Time
Invalid Time
|
In this talk, you'll find more digestible and fun ways to approach category theory, explaining the buzzwords as we go. Irene will build from examples, give some motivation, and see where we end up! If you want to find out what the "category" in "category theory" means, while not falling asleep, this is the talk for you! |
Whilst this is somewhat true, laziness makes it very easy to introduce space leaks into a program and use more memory than necessary. Therefore it's important to understand the tools and techniques at our disposal for analysing and correcting memory usage. In this talk, Matthew will explore different ways to analyse the memory usage of programs. Starting with the humble heap profiler, he'll look at its different modes of operation and how to interpret the heap profiles. He'll then discuss some more precise techniques to find space leaks and possible future directions for space profiling. |
|
|||||||||
12:15
Invalid Time
Invalid Time
|
Lunch |
|||||||||||
13:15
Invalid Time
Invalid Time
|
This talk explains how to fix all the pain, and make records a strength of Haskell, without making them harder to use. We show how to encode records and fields in a type class, then use existing Haskell machinery to abstract over multiple field names. This type class has been added to GHC, and is automatically generated for standard Haskell records. Building on that, we provide a convenient syntax through a Haskell preprocessor. We’ve validated our design with the DAML programming language (based on the GHC compiler) which uses these records as standard. We’re happy to report that users experiences have been very positive. Record syntax: https://github.com/ndmitchell/record-dot-preprocessor DAML programming language: https://daml.com/
records
haskell
daml
About the speaker...Neil MitchellNeil is a strong believer in the functional approach, finding the combination of conciseness, static-typing and testability to offer significant advantages. He is currently developing a number of open source Haskell projects, all of which can be found on his Github page or on Hackage. He welcomes both contributions via pull requests and bug reports via the GitHub issue trackers. Some of my more popular projects include:
Check out Neil's blog and follow him on Twitter @ndm_haskell. |
haskell
domain-specific-languages
performance
meta-programming
parser-combinators
parsers
About the speaker... |
Creation and maintenance gets easier when we can focus on:
In the last two years, while creating mobile games in Haskell for Android and iOS at Keera Studios, Christina has used, improved and created structures and methodologies which help to focus on the given programming task at hand. In fact, the most important and effective part of her daily work of creating easy maintainable games is stepping back, 'cleaning' the code of our apps by introducing these structures and methodologies. In this talk, Christina will use interactive examples to show the effects of frequent code 'cleaning', like:
haskell
clean-code
ios
android
mobile
game-apps
About the speaker...Christina ZellerHer background in educational science, psychology and computer science, and her experience as a research and teaching assistant in the area of cognitive science is an inspiring source for creating apps. Recently, she complements this background with photography and volunteering at an Impact Hub. Among her recent goals are:
|
|||||||||
14:00
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
14:15
Invalid Time
Invalid Time
|
In this talk, you will see that, by using functional reactive programming to implement and structure programs and systems, the simplicity of testing pure functional code using principled techniques can be regained, opening up for powerful cross-platform testing frameworks unparallelled by their imperative counterparts. This approach enables property-based testing based on temporal logic, fully reproducible record-andreplay (even from deployed code), and hardware-in-the-loop testing. The talk will cover the necessary basics of functional reactive programming and illustrate using non-trivial case studies. This talk is based on joint work by Dr Ivan Perez, Research Scientist at the NIA/NASA Formal Methods group and Founder of Keera Studios, and Dr Henrik Nilsson, School of Computer Science, University of Nottingham. |
This talk presents a principled approach to specifying and implementing simple application-level communication protocols. It is a lightweight form of session types: by specifying protocols via state machines and encoding them into types we can guarantee the protocols are free from deadlock and that well-typed protocol implementations respect the protocol specification. A special feature of this approach is the support for protocol pipelining, which enables effective use of network bandwidth in the presence of latency. The talk will also touch on practical aspects such as testing using simulation, and where this approach has been used in real applications.
types
state-machines
message-passing
network
protocols
distributed-systems
haskell
About the speaker... |
In this talk, Tom will discuss the esoteric language of JavaScript and use Ramda.js to introduce its novel type system. While scary at first, he'll decipher cryptic functions like In the end, Tom will guarantee that you'll be impressed at how far you can get with the Idris that you have today! |
|||||||||
15:00
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
15:15
Invalid Time
Invalid Time
|
|
In this talk, Tom will show how he evolved an entity/controller system in Haskell, as a series of small progressions from simpler abstractions, and how Haskell's type system allows abstracting over types to provide a very clean user experience. |
It turns out that this architecture is a great idea for Haskell too. It provides an easy to understand the pattern to organise the state in long-lived or complex Haskell applications. The Elm Architecture replaces the threading of a state monad or a stack of monad transformers through the program with a single pure update function. Its event-based approach provides a simple way to handle concurrency, making things even more fun. Attendees will come out knowing how to organise a multi-threaded Haskell application using the Elm Architecture. We will see how to perform non-blocking IO and how to continuously update our state with computations from multiple threads; all inside one simple pure function.
haskell
architecture
elm
fp
About the speaker...Marcelo LazaroniHe has a Bsc in Computer Science from the University of West London and after writing a Twitter client for Chrome in Haskell and Elm as a side project hasn't been able to leave the functional paradigm. Marcelo has convinced a few companies to use pure FP languages and currently spends his days building a secure messaging platform in Elm for Pushfor. He tweets at @Marcelolaza. |
|||||||||
15:30
Invalid Time
Invalid Time
|
In this talk Csaba will share his vision of working in an environment that leaves nothing hidden under the hood, thereby giving the programmer full control over every aspect of compilation in a user-friendly way.
haskell
ux
programming-environment
optimization
tooling
About the speaker...Csaba HruskaI'm a software engineer and I'm into compilers and pure functional programming. I'm doing Research & Development. I'm working on the GRIN Compiler Project. (GHC, LLVM, ASM, pointer analysis, optimization) |
He tried Microsoft's Logo-like Steve-bot and whilst it was very easy to use, like any imperative approach, composition was difficult to achieve. However, using Haskell, functions, Monoids and a prudent use of lenses, a remarkably simple domain-specific language (DSL) can be built that achieves composition. With composition, it is possible to generate some very complex structures and Tim started with castles! This talk will briefly describe the DSL and generate some structures in-game with a live demo. |
There are two different approaches for implementing a GRIN back end for a programming language. The first one is to use an intermediate language called Lambda, and the second one is to compile the front end language directly to GRIN. Both approaches will be briefly examined. The second part of the talk will focus on the details of the Idris-GRIN back end which consists of three main parts: an API for GRIN code generation, a program transformation selector, and the implementation of the primitive operations of Idris. The Idris-GRIN back end is mostly written in Haskell, the rest is implemented in C and LLVM-IR. The presentation is approachable by all audiences. |
|||||||||
15:45
Invalid Time
Invalid Time
|
haskell
realworld-haskell
planning
robots
About the speakers...Oliver CharlesFast forward to 2014, and Oliver is perhaps best known for his yearly 24 Days of Hackage series of blog posts, where he spends 24 days at the end of the year blogging about different Haskell libraries. Whether it's game programming, database querying, type safety, or high performant data processing - there's probably a library about it that he's blogged about! Oliver is currently the author of a collection of Haskell libraries, a developer for CircuitHub.com, and an active speaker with the London Haskell User Group. |
|
haskell
generators
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:00
Invalid Time
Invalid Time
|
Tea & Coffee Break |
|||||||||||
16:15
Invalid Time
Invalid Time
|
KEYNOTE
The powerful type system features, in particular, make it possible to maintain type information of the embedded language expression during the whole compilation phase. While maintaining the type information does not come for free, this extra effort is in our experience well worthwhile. In this talk, Gabriele will use the in Haskell embedded language Accelerate as case study to show, among others, how to make many of the host language features, like pattern matching and variable binding, available in the embedded language without compromising efficiency.
variable-binding
pattern-matching
accelerate
type-system
haskell
functional-programming
About the speaker...Gabriele KellerShe contributed to the design of type families in Haskell, and is one of the co-authors of the paper ”Associated Type Synonyms”, which won the ACM SIGPLAN Most Influential ICFP Paper Award. She co-developed leading Haskell high-performance array frameworks, including Repa and Accelerate. Her research interests are type systems, functional languages, and how these languages can be used to reduce the costs of software development, in particular in the context of high-performance computing and safety-critical systems. |
|||||||||||
17:15
Invalid Time
Invalid Time
|
Haskell eXchange 2019 Wrap Up Presentation |
|||||||||||
17:25
Invalid Time
Invalid Time
|
End of Haskell eXchange 2019 - See you in 2020! |
-
Keynote: Revisiting Pattern Match Overlap Checks
Featuring Simon Peyton Jones
How hard can it be to spot missing or overlapping patterns in a Haskell function definition? Surely it’s the least we can expect from a decent compiler? But when you mix in GADTs, pattern guards, view patterns, data families, strict data constructors, and pattern synonyms, matters get...
pattern-matching refactored-implementation gadt ghc haskell -
Porcupine: Flows Your Rows with Arrows
Featuring Yves Parès
This talk aims at presenting the porcupine Haskell library and more generally the advantages of using a more constrained framework (in this case, arrow-based) than pure functions and monads to represent parameterizable data pipelines in Haskell.
haskell constrained-framework data porcupine -
The Scope of Algebraic Effects
Featuring Nicolas Wu
Effect handlers are a clean way of describing various effects in a principled and modular way. The approach models the syntax and semantic of operations, where syntax is given by a free monad, and the semantics is given by a handler. Traditionally, the operations must be algebraic in that they...
haskell effect-handlers free-monad -
Cleaning the Big Picture: Creating Maintainable Mobile Games in Haskell
Featuring Christina Zeller
As game-app developers, you want to create many games that are easy to maintain.
haskell clean-code ios android mobile game-apps -
JavaScript for Idris Developers
Featuring Tom Harding
It's easy to think in your endless 9-to-5 that Idris is all there is: it's your backend, frontend, mobile apps, and endless libraries to learn each week. It's about time someone asked: what can you learn from academia?
haskell type-system ramda.js idris javascript -
Seven Scribbles in Compositionality
Featuring Irene Papakonstantinou
You've been meaning to read some clever books, but you've been too lazy, and they're all too big. You might all be Haskell developers (or Haskell enthusiasts), but what on earth is a preorder? Why should anyone care?
haskell categorytheory -
Lightning Talk: Ideas for Future Haskell Tooling
Featuring Csaba Hruska
The Haskell ecosystem mostly consists of loosely connected tools e.g. editor, compiler, REPL interface, profiler. However, it would be beneficial for the programming experience if these tools were tightly integrated. The optimizer and the language runtime could provide valuable information for...
haskell ux programming-environment optimization tooling -
This Ain't Your Daddy's Probability Monad - Modelling Probabilistic Time in Haskell
Featuring Lars Brünjes
It is well known that (discrete) probability distributions can be implemented as monads in Haskell in various more or less sophisticated ways.
haskell network-modelling time probability monad -
Gazing into the Void: Understanding Space (Leaks)
Featuring Matthew Pickering
Passing by any online Haskell meeting place you'll hear questions about why a program doesn't type check but seldom about why a program is a memory hog. It's widely assumed that the compiler will make your program fast enough and use a reasonable amount of memory.
haskell tooling memory-usage-of-programs -
Lightning talk: Evolving an Entity-Component Game Engine in Haskell
Featuring Tom Johnson
Videogame logic and architecture has some interesting requirements that don't suit either traditional functional or object-oriented paradigms. Entity/controller systems have arisen as an alternative paradigm, implemented atop traditional languages, to help solve these problems.
haskell types entity -
Lightning Talk: The Power Of Const
Featuring Markus Hauck
At first glance, the
haskell fp const datatypes functorsConst
newtype looks nonsensical. But as it turns out, this humble newtype has a lot of interesting things going for it. This talk will look at some of the surprising usages of Const and show you that there is a lot of cool stuff going on. -
Parsley: A Staged Selective Parser Combinator Library
Featuring Jamie Willis
Parser combinator libraries are a popular approach to writing parsers in the functional world. In particular, monadic parser combinators take centre stage. But when looking to design a performant library, monads provide a hard stopper on potential introspective optimisation opportunities....
haskell domain-specific-languages performance meta-programming parser-combinators parsers -
Lightning Talk: The Anatomy of an X-GRIN Back End. Showcase: Idris.
Featuring Andor Penzes
In this talk, Andor is going to discuss the anatomy of GRIN as a compiler back end by showcasing the main challenges the grin team had to overcome when implementing.
haskell abstract-interpretation compiler-construction -
Using Haskell and Symbolic Execution to Verify Spacecraft Control Programs
Featuring Georgy Lukyanov
Verification of correctness of control programs is an essential task in the development of space electronics; it is difficult and typically outweighs design and programming tasks in terms of development hours
haskell automated-theorem-proving symbolic-execution formal-verification -
Lightning Talk: The Elm Architecture in Haskell: Managing state with multiple threads
Featuring Marcelo Lazaroni
Elm is a pure functional language for the front-end. It enforces an architecture that allows programs to stay pure in an event-based setting.
haskell architecture elm fp -
Keynote: (Programming Languages) in Agda = Programming (Languages in Agda)
Featuring Philip Wadler
The most profound connection between logic and computation is a pun.
functional-programming types propositions agda haskell -
Categories and State Machines
Featuring Marcin Szamotulski
Marcin will give a short introduction to categories in Haskell, and he will present free construction of categories which embrace monadic actions and their usefulness to build state machines in Haskell.
haskell state-machines kleisli-categories categories -
What To Do When You Have Plenty of (Non-)Haskell
Featuring Mathieu Boespflug
Codebases are hard to build. Someone somewhere invariably wants to write custom code preprocessors and generators. Teams each use their own mix of languages (Haskell, C/C++, Rust, Java{Script}, Python...). Changing code induces a lot of rebuilding and GHC requires so much CPU power that it would...
bazel build-systems haskell ghc codebases -
Principled Testing of Functional Reactive Systems
Featuring Henrik Nilsson
In pure functional programming, testing is greatly facilitated thanks to referential transparency guaranteeing exact reproducibility. Principled techniques such as property based testing have proved to be particularly effective. However, once you get to whole programs or entire systems, nothing...
full-reproducibility cross-platform-testing-frameworks property-based-testing frp functional-reactive-programming haskell -
Fixing Haskell Records
Featuring Neil Mitchell
Sadly, Haskell records aren’t very good - problems include that field names must be unique and that record updates are not very expressive. A variety of solutions have been proposed over many decades, but none has gained traction. The closest answer Haskell has is the lens library, which famously...
records haskell daml -
Build Systems à la Carte
Featuring Andrey Mokhov
Build systems are used by every developer around the world but are rarely the object of study.
shake bazel dune nix haskell build-systems -
A Type-ical Case Study: The Sound Type-Indexed Type Checker
Featuring Richard Eisenberg
This talk will be an exploration of an implementation of a simply-typed λ-calculus using lots of Haskell's fancy types: only well-typed terms can be represented.
haskell well-typed types -
2
Lightning Talk: Manufacturing Circuit Boards with Robots and Haskell
Featuring Oliver Charles and Andrew Seddon
Oliver and Andrew will demonstrate the use of Haskell to control industrial robots in a real-world manufacturing environment. They will also show that Haskell can be used to interact with the state-of-the-art general-purpose planning library "Fast Downward" to find optimal plans for...
haskell realworld-haskell planning robots -
Well-Typed Communication Protocols
Featuring Duncan Coutts
Concurrency is still hard. Building distributed applications using message passing is still hard. Application-specific message passing protocols are often specified in an informal and ad-hoc way (if at all), with very little support from the programming language or tools. This sets things up for...
types state-machines message-passing network protocols distributed-systems haskell -
Higher-Order Type-Level Programming
Featuring Csongor Kiss
Thanks to its myriad of extensions, GHC's type system has come a long way in offering a powerful language for expressing complex programs at the type-level.
type-level-programming haskell ghc types -
Lightning Talk: Generating Castles for Minecraft™ using Haskell
Featuring Tim Williams
Tim has recently started playing Minecraft with his kids but quickly found himself wanting to generate larger structures using code.
lenses games dsl haskell monoids mindcraft -
GHC Runtime Linker by Example
Featuring Artem Pyanykh
Linkers are one of the least understood yet widely used software components. GHC, unlike many other projects, has its own rather complex linking facilities in the runtime system that among other things power our beloved GHCi. And while having a custom linker has its benefits there are also...
haskell runtime linker compiler ghc -
Keynote: Haskell is a Great Host
Featuring Gabriele Keller
Haskell is a great host language for embedded domain specific languages, not least thanks to extensions like generalised algebraic data types, type families, and Template Haskell.
variable-binding pattern-matching accelerate type-system haskell functional-programming -
Stick to Simple Haskell
Featuring Marco Sampellegrini
Three years ago Marco set out to learn Haskell. He eventually joined a company to work with Haskell full time. That was it: no more runtime errors, no more wasting hours on stupid bugs. Finally living the dream. Except it didn't exactly go down like that.
haskell types type-level ghc -
-
Automating Elaborate-Transform-Load for Busy Data Scientists
Featuring Michał J. Gajda
Haskell is making great strides into processing data at greater convenience. You do not only have fast parsers for most important languages, but now automatic parser generators that discover the structure of our documents and package them as Haskell types: DataFrames, JSON Autotype, XML TypeLift....
data haskell parsing csv etl metadata ingest xml json bigdata analytics datascience -
Functional Lenses Through a Practical Lens
Featuring Sara Fransson
In the greater Haskell ecosystem, as well as in various industry codebases, libraries sometimes provide lens based APIs. One of the great promises of lenses is to make it easy and smooth to work with Haskell's immutable data structures.
optics lenses haskell -
Lightning Talk: Making and Testing Code Generators in Haskell
Featuring Michał J. Gajda
Michał and the Migamake Pte Ltd team are currently making an open source library to help produce code generators in Haskell. It facilitates generating code with syntax-checked templates and unit testing with smaller and more robust tests Michał will go through code generation approaches seen in...
haskell generators
-
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 2020
Two days - Online Conference
The Haskell eXchange Online is the online edition of the annual conference created for and by the Skills Matter Haskell community. An opportunity for Haskellers to meet, learn and share skills, discover emerging technologies and help evolve the Haskell ecosystem.
haskell ghc functional-programming types haskellx -
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