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.
Featuring two days of talks, demos and discussions, the Haskell eXchange is an opportunity for Haskellers to meet, talk, learn, share skills and exchange ideas. Everyone is welcome to join, whether an expert or a beginner, whether commercial user, academic or hobbyist.
Line Up 2015
View this year's speakers, topics and workshops/tutorials here.
The Haskell eXchange is an independent conference organised for and by the community. We are therefore looking forward to these year's talks and workshops in particular on:
- Talks about Haskell libraries and tools
- Experience reports on the use of Haskell in various environments
- Tutorials on the use of Haskell itself, or particular Haskell libraries and tools
- Coding techniques, tips and tricks
- Talks about the implementation of Haskell compilers and tools
- Ideas for language design and the future of Haskell
- Impressions of other programming languages that are related to Haskell
There will be three types of session:
- 45 minute talks
- 15 minute lightning talks
- 2+ hour hands on sessions / tutorials
Haskell Infrastructure Hackathon
There will be a Haskell Hackathon following the conference. Find out more here.
Sponsorship
If you are interested in sponsoring Haskell eXchange 2015, visit this page.
Excited? Share it!
Day 1: Thursday, October 8th, 2015
Haskell Exchange
Track | Track 1 | Track 2 | ||||||
08:00 |
Day 1, 8 Oct starts 08:00
Arrival, Registration & Breakfast
|
|||||||
08:55 |
Day 1, 8 Oct starts 08:55
Opening & Welcome
|
|||||||
09:00 |
GHC translates all of Haskell into a tiny intermediate language called Core, does a lot of optimisations on Core, and then generates executable code. In this talk I’ll take you on a journey into Core, with several goals. First, if you ever do performance-debugging of a Haskell program you may well find yourself staring at Core dumps to understand the program that the computer is executing (it may look nothing like the one you wrote!). Second, one way to extend GHC is to write a Core-to-Core plugin to do some cool optimisation or transformation that you want; and you can only do that if you understand Core. Lastly, even if you want to do none of these things, I think you may enjoy the adventure. Core is a tiny but super-expressive language that can express all of Haskell, including all the types, and more beside. It pulls off this trick by drawing directly on System F, a mathematical calculus from type theory. Functional programming is amazing: serious theory leads directly to beautiful implementations. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
core-to-core
haskell-core
core
haskell-ghc
functional-programming
ghc
haskell
haskellx
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:00 |
|
|||||||
10:30 |
At Iris Connect we are developing a video sharing platform that is being deployed in over a thousand schools worldwide. As part of this process, the hundreds of gigabytes of videos uploaded from customers every day are a central part of our business. In this talk I will present our approach to video transcoding, and how we are using Haskell to meet our business needs. I will explain how our distributed architecture - inspired to FP desirable properties - allows us to reliably process hundreds of videos every day, dealing with high volume traffic and scaling at need, whilst keeping costs at bay.
video-transcoding
scalability
distributed-computing
functional-programming
hpc
haskell
haskellx
About the speaker...Alfredo Di NapoliAlfredo works for Iris Connect as a Senior Software Engineer on a web/video platform to help teachers to record, develop and share their practice. He likes to define himself a beauty-driven developer, considering beauty the ultimate defence against software complexity. Alfredo is an inquisitive Haskell programmer and an active open source contributor. |
Ludwig is a statically typed, declarative data description language. It's main use case is in Fugue, a product which lets you declare your cloud infrastructure in this language and then takes care of the rest. In this talk, we follow the interesting path from YAML to a statically typed data declaration DSL. On our way, we discuss some thoughts and patterns for implementing DSLs in Haskell. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
dsls
ocaml
web
haskell
About the speaker...Jasper Van der JeugtJasper Van der Jeugt was born in 1990, and spent most of his youth in Lokeren & Ghent, Belgium. He now lives in Zürich, Switzerland. Jasper has been coding and writing about Haskell since his time at Ghent University. He has been using the language professionally for the last three years, and in open source for much longer. He is currently a consultant for Luminal. In his spare time, he skateboards down mountains and takes pictures. Head over to Jasper's blog, check out what he is up to on Github and follow him on Twitter @jaspervdj. |
||||||
11:30 |
This is a story of an Infrastructure team at Zalora that implemented DevOps using Haskell and Nix. The story covers: - picking a dynamically-typed functional language, suffering from it and recovering; - surviving in a cruel stringly-typed world of Unix; - implementing system software in Haskell and operating it; - overcoming challenges of Haskell deployment; - using Haskell to integrate with various 3rd-party services; - successfully abandoning traditional DevOps tooling that plagues the industry. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
nix
devops
functional-programming
haskell
About the speaker...Vladimir KirillovVlad is a young hacker who has been developing CDN software in dynamic and weak languages, shifted towards cloud-native applications using Erlang on Xen and Unikernels and is now building infrastructure and platform software using Haskell at Zalora. |
Haskell programming in the real world involves interacting with myriad legacy systems and libraries, many of which are written in C and require high-performance interop. inline-c is a package for writing mixed C/Haskell source code that seamlessly invokes native and foreign functions from these libraries in the same module. No FFI required. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
type-theory
concurrency
web-technologies
inline-c
legacy
functional-programming
hpc
haskell
About the speaker...Francesco MazzoliFrancesco Mazzoli is a Haskell programmer working at FPComplete from Rome. Before that, he has dropped out of a PhD working on Agda, worked with Haskell at Better, and spent almost a year working at RabbitMQ. He studied Computer Science at Imperial College London. |
||||||
12:15 |
|
|||||||
13:30 |
In this talk, I will describe the architecture and history of ghc-exactprint. ghc-exactprint is a library which enables programmers to easily specify refactoring operations by directly modifying the GHC AST. By leveraging the GHC parser and a suitable intermediate representation, we can refactor any haskell source file. I will also demonstrate two libraries which are already using ghc-exactprint to directly apply refactorings. HaRe has been rewritten to take advantage of this new machinery which has resulted in a significant reduction in complexity. Secondly, apply-refact automatically applies hlint suggestions. This program demonstrates one method in which the new foundation can be used in tandem with haskell-src-exts. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
refactoring
ghc-exactprint
haskell-ghc
apply-refact
haskell-src-exts
functional-programming
haskell
haskellx
About the speaker...Matthew PickeringI am a student at the University of Oxford studying Computer Science and Philosophy. I have contributed to a number of open source projects and twice participated in Google Summer of Code for Haskell.org |
Idealised versions of board and simple arcade games render beautiful snippets of Haskell code. But real games need to deal with user input and output, animation, sound, asset management, UI plasticity, graphics acceleration, concurrency and networking, all of which involve the outside world and add side effects throughout the program. Most of the problems and patterns that we find in other kinds of software can also be found in some form in game programming. As such, game programming represents Haskell’s ultimate challenge. There have been multiple attempts at proving that Haskell can be used to write games, but none have been definitive enough to convince those outside the community. Keera Studios was founded as a way to turn this situation around, by creating more and more complex games and demonstrate, by example, the possibilities and benefits of functional programming. To prove that Haskell is a suitable choice for game programming, we want to do real multimedia and interact with real modern hardware, target (at least some) gaming platforms; and show that FP principles and techniques are beneficial for game development. Our work in game programming has demonstrated that Haskell is a worthy contestant. We have created games that interact with Kinect, Wiimotes and Leapmotion, use OpenGL and SDL2 (SDL is used in games such as Angry Birds) for multimedia, target mobile platforms such as Android and are available for purchase on Google Play. We have also explored different ways to take advantage of pure functional programming, either by means of an embedded DSL (like in our Cross-platform Graphical Adventure Game Engine GALE) or using FRP (Keera Magic Cookies, Keera Breakout), and also for game testing and profiling purposes. In this workshop I will demonstrate, by example, how to write games that combine these features, what to watch for, where the current challenges lie, and how we can, as a community, use the creative and fun process of game programming to bring Haskell to the world and vice versa. Whoever wants to follow the talk with their own laptops should be able to compile this haskell package: https://github.com/keera-studios/haskell-game-programming There's no need to read/process the material ahead. If it compiles, they are good to go. It usually takes just 2-7 minutes on my machine, so if they can't get it working before the talk, that's ok. I strongly recommend using a sandbox.
game-programming
functional-programming
haskell
About the speaker...Ivan PerezIvan is the founder of the Haskell Game Programming company Keera Studios. He is a PhD candidate at the University of Nottingham, under the supervision of Henrik Nilsson and Graham Hutton. |
||||||
14:30 |
In this talk, we'll take a deep dive into how to write high performance Haskell code, using what we've learned while optimizing the core Haskell libraries. We'll focus on understanding the memory layout of Haskell data types and how it can be optimized to make your program run faster. I'll give you several "rules of thumb" for writing code that performs well from the start, rather than having to be patched up once performance issues arise. This talk complements Bryan O'Sullivan's 2014 talk on Performance Measurement and Optimization in Haskell, by focusing more on actual optimisations, rather than measuring performance. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
functional-programming
hpc
optimization
haskell
About the speaker...Johan TibellJohan Tibell is a Googler and a long time contributor and maintainer of some of the core Haskell libraries, including the most popular data structure and networking libraries. Johan has worked on GHC's threading implementation for scalable I/O, modern hashing-based data structures, and the high-performance Python protocol buffer implementation used inside Google. |
Idealised versions of board and simple arcade games render beautiful snippets of Haskell code. But real games need to deal with user input and output, animation, sound, asset management, UI plasticity, graphics acceleration, concurrency and networking, all of which involve the outside world and add side effects throughout the program. Most of the problems and patterns that we find in other kinds of software can also be found in some form in game programming. As such, game programming represents Haskell’s ultimate challenge. There have been multiple attempts at proving that Haskell can be used to write games, but none have been definitive enough to convince those outside the community. Keera Studios was founded as a way to turn this situation around, by creating more and more complex games and demonstrate, by example, the possibilities and benefits of functional programming. To prove that Haskell is a suitable choice for game programming, we want to do real multimedia and interact with real modern hardware, target (at least some) gaming platforms; and show that FP principles and techniques are beneficial for game development. Our work in game programming has demonstrated that Haskell is a worthy contestant. We have created games that interact with Kinect, Wiimotes and Leapmotion, use OpenGL and SDL2 (SDL is used in games such as Angry Birds) for multimedia, target mobile platforms such as Android and are available for purchase on Google Play. We have also explored different ways to take advantage of pure functional programming, either by means of an embedded DSL (like in our Cross-platform Graphical Adventure Game Engine GALE) or using FRP (Keera Magic Cookies, Keera Breakout), and also for game testing and profiling purposes. In this workshop I will demonstrate, by example, how to write games that combine these features, what to watch for, where the current challenges lie, and how we can, as a community, use the creative and fun process of game programming to bring Haskell to the world and vice versa. Whoever wants to follow the talk with their own laptops should be able to compile this haskell package: https://github.com/keera-studios/haskell-game-programming There's no need to read/process the material ahead. If it compiles, they are good to go. It usually takes just 2-7 minutes on my machine, so if they can't get it working before the talk, that's ok. I strongly recommend using a sandbox. About the speaker...Ivan PerezIvan is the founder of the Haskell Game Programming company Keera Studios. He is a PhD candidate at the University of Nottingham, under the supervision of Henrik Nilsson and Graham Hutton. |
||||||
15:30 |
|
|||||||
15:45 |
Infinipool produces software to make the process of transporting and storing data more efficient. We exploit the fact that a lot of real-world data is highly redundant. By finding these redundancies explicitly, we are able to avoid transporting and storing a large portion of the data. For our latest program, we chose to use Haskell as the implementation language. So far, the experience has been great. A particularly nice aspect was the abundance of fresh ideas and interesting libraries in the community. Libraries such as Haxl or servant are not only solving concrete problems that we had, but do so in a way that reading the actual papers and understanding the design and implementation is an intellectually rewarding experience. The mathematical feel of the language itself adds to that. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
infinipool
haxl
servant
functional-programming
haskell
haskellx
About the speaker...Philipp KantAs a theoretical physicist, I spent the better part of the last decade calculating predictions for properties of the Higgs Boson. After it was actually discovered, I decided it was time to do something new. I had already used Haskell for a few years, so I decided to join infinipool, a Berlin software company that had advertised on 'functional jobs'. I am working there since early 2014. My (physics) publications are at http://inspirehep.net/author/profile/P.Kant.2 |
Oliver will be discussing the state of GUI programming in Haskell, briefly talking about the options available for application developers in 2015. He'll also touch on his experiences with building an interactive graphical application and where Haskell shines and where it needs to improve. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
haskell
gui
gui-programming
haskellx
About the speaker...Oliver CharlesOliver first discovered Haskell in late 2011, mostly curious as to what this radically different language was all about. After successfully type-checking his first program, he was hooked by the language's combination of succinctness and expressivity, and fascinated by the rich amount of theory and rigour behind the concepts. Fast 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. |
||||||
16:05 |
This talk will describe HdpH: A domain specific language and runtime system for distributed parallel computation. We show, by example, the simplicity of the domain specific language and the features required to specify parallel computations. A description of the HdpH runtime system, work-stealing scheduler, and overall system architecture follows. Time permitting we will discuss future directions for HdpH and show how it relates to other distributed frameworks such as Cloud Haskell, Eden and Gum/GpH. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
hdph
hdph-runtime
dsl
cloud-haskell
eden
gum
gph
functional-programming
haskell
About the speaker...Blair ArchibaldA current Ph.D student at the University of Glasgow working on distributed programming using Haskell and the Haskell Distributed Parallel Haskell (HdpH) DSL. His main interests are providing fast and scalable applications while maintaining a simplistic programming interface to enable non-expert users to make use of the current distributed computing trends. |
Sometimes you cannot use Haskell to solve a problem because of external constraints. Despair not! You can still use it to develop your solution. I will talk about my experience designing solution and doing mini proof of concepts in Haskell in order to implement it with some other technology. This might seem like a waste of time at first but it yields very elegant solutions as it gives you another perspective on your problem
functional-programming
haskell
About the speaker...Andraz BajtI worked on a large Scala based storage service and am currently working on Google's open-source GRC software. I always push for functional programming and sometimes do a bit of Haskell consulting. My bigger Haskell projects are a compiler for Core and an algebraic effects library. |
||||||
16:25 |
JsonGrammar is a combinator library for expressing bidrectional transformations between JSON expression trees (we use Aeson's Value datatype) and your own custom Haskell datatypes. Instead of writing separate fromJSON and toJSON functions, you write a single expression (a grammar) that expresses the conversions in both directions. You have full control over the mapping; for example, the property names in JSON and the Haskell record field names don't have to be the same, and the trees don't even have to be the same shape. This lightning talk will explain the building blocks of the API and how to combine them into full-fledged parsers/formatters. Find out more about JsonGrammar here. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
json
functional-programming
haskell
About the speaker...Martijn van SteenbergenMartijn has a masters degree in Software Technology from Utrecht University, where Haskell was the go-to language for the research tools. He was involved in the founding of the Dutch Haskell Users Group, where he has given several talks. He is now based in London where he works for Google. |
Tooling for Haskell development is a hot topic, since one of the biggest grievances in Haskell development is the issue of managing dependencies. Enter Docker, a tool that makes defining and running containers easy. Docker allows you to easily create reproducible environments across different architectures and operating systems, while being much more lightweight than full-fledged virtual machines. It brings testing and production environments a lot closer together, giving developers much more confidence to release new code. Since Docker is a fairly new technology, there is still room for exploration to find the best way to set up development environments. In this talk I will give a short introduction to Docker and I will show how I set up my development environment using Docker containers. The main benefits of this setup will be portability across dev machines and isolating the development environment. To underline these benefits, I will demonstrate how I created and deployed a chat bot using Haskell. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
docker
dependencies
container
devops
functional-programming
haskell
About the speaker...San GillisI'm a software engineer working at VikingCo. In my latest project I set up a VoIP service using Docker, we currently have about 20.000 users and will be scaling up to 200.000 in the near future. This project has given me a lot of real world experience using Docker. In my spare time I've been a Haskell enthousiast for a bit over a year now. I've always been eager to tinker with and try to optimize my development environment. Docker is one of the tools I've been experimenting with to set up clean and reproducible environments. You can find a bit more info about me here: http://sgillis.github.io/ |
||||||
16:45 |
|
|||||||
17:00 |
In this talk, Lennart will show how to design a strongly typed interface to an external library. The external library has some rather complex, dynamically checked, types. Making a strongly typed, easy-to-use version of the API uses several Haskell type system extensions, e.g., type level strings, closed type families, kind definitions. It even uses some extensions that are not quite in ghc yet. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
types
strongly-typed
ghc
haskell
haskellx
About the speaker...Lennart AugustssonLennart Augustsson is currently employed at Standard Chartered Bank in London. During his career he has done different things, e.g., writing about four Haskell compilers, written USB device drivers, winning the International Obfuscated C Code Co |
|||||||
18:00 |
|
Day 2: Friday, October 9th, 2015
Haskell Exchange Day 2
Track | Track 1 | Track 2 | ||||||
08:00 |
Day 2, 9 Oct starts 08:00
Arrival, Registration & Breakfast
|
|||||||
09:00 |
Haxl is a small framework for automatically batching and overlapping data-fetching. It was open-sourced by Facebook in 2014, and is in large-scale production use as part of Facebook's spam-filtering infrastructure. In this talk I'd like to explore some of the ways we can use Haxl to express not just data-fetching concurrency, but other kinds of concurrency too. I'll also take a look at the internals of Haxl, and explore whether we can generalize the simple model of round-based scheduling to allow more flexible scheduling strategies.
research
haskell
functional-programming
About the speaker...Simon MarlowSimon Marlow is a Software Engineer at Facebook in London. He is working on Haxl, a Haskell-based domain-specific language that is used by the teams fighting spam and malware. Simon is a co-author of the Glasgow Haskell Compiler, author of the book “Parallel and Concurrent Programming in Haskell”, and has a string of research publications in functional programming, language design, compilers, and language implementation. |
|||||||
10:00 |
|
|||||||
10:30 |
Shake, like Make, is a tool for writing build systems. However, unlike Make, Shake features monadic dependencies (your dependencies themselves can depend on the results of previous dependencies), polymorphic dependencies (your dependencies don't have to be files) and stable dependencies (if something rebuilds but doesn't change things that depend on it don't have to rebuild). These features make it much easier to define build systems that have accurate dependencies. Additionally, these features let you define your own custom build system, and then implement a Shake-based interpreter for it. It is often said that the easiest way to solve a problem is to define the perfect language for solving the problem, then write an interpreter. In this talk we'll see how to use Shake to apply that advice to build systems. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
build-systems
haskell
functional-programming
About the speaker...Neil MitchellNeil Mitchell is a Haskell programmer who lives in Cambridge with his wife Emily and his son Henry. Neil has a PhD in Computer Science from York University, working on making functional programs shorter, faster and safer. Since then he's worked with F# at Credit Suisse and Haskell/F#/C++ at Standard Chartered and Barclays, taking the lessons of functional programming and applying them in finance. Neil 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. |
Servant (http://haskell-servant.github.io/) is a recent library for writing web applications with a quite novel approach: users describe web APIs with a type-level DSL. The library then uses that description, which can be inspected and transformed for great good to: - provide very strong type safety guarantees on your request handlers, - derive Haskell or Javascript functions to query the aforementionned API, - automatically generate the API documentation, - overall make the code as boilerplate-free as possible, by having all the important information about your API in the same place. This very hands-on talk hopes to demonstrate what the every day web application developer can get out of servant as-is but also how one can extend the (unopinionated) library in every possible direction to get an opinionated, tailor-made web framework.
numerical-computing
al
web-applications
mathematics
haskell
About the speaker...Alp MestanogullariAlp met Haskell in 2008 while he was a student and got immediately hooked. He has tackled all kinds of tasks with Haskell since then, first as a hobbyist then for a living, releasing several open-source libraries along the way among which Servant. He now works for The Kitty Knows Ltd, where he builds all kinds of software from web applications to statistical learning algorithms, for in-house products as well as consulting clients. |
||||||
11:30 |
Are the logical foundations of your favourite programming language not entirely satisfactory? Is your everyday programming work far too useful and practical? Have I got the talk for you! We’ll learn how parametric higher-order abstract syntax (PHOAS) makes it simple and easy to embed a logic in your favourite programming language — as long as it’s Haskell, Agda, or Idris. Then, by Jove, we’re going to prove some theorems! Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
program
type
proof
proposition
language
logic
haskell
About the speaker...Mietek BakMiëtek Bak is a functional programmer, author of Halcyon and Haskell on Heroku, and founder at Least Fixed in Cambridge. He fell in love with formal languages at University of Wrocław, where students are expected to fall in love with formal languages. Since then, he’s worked in a professional capacity with Erlang, OCaml, and Haskell. |
The opinions about Scala in the Haskell community differ widely. Most will immediately point out reasons why they think Scala is complex and that Haskell is so much better. But is it really? In this talk, we will take a radically different approach: We will outline what Haskell can learn from Scala and depart from the usual narrative that it is just a “lesser Haskell for the JVM”. Topics will include dependent types and computations at the type level, composability and modularity, and compile-time reflection and generic programming. We will also compare and contrast the appearance of several popular “design patterns” in Haskell and Scala. If you’re interested in hearing about “Hasochism”, “shapeless”, and how to make the Scala compiler cry, you should definitely attend this session. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
scala
haskell
functional-programming
About the speakers...Miles SabinMiles has been doing stuff with Scala for more than ten years, currently with Underscore Consulting. He is a cofounder of Typelevel and his best known project, the Scala generic programming library shapeless, is the weapon of choice wherever boilerplate needs to be scrapped or arities abstracted over. Head over to Miles' blog, check out his projects on GitHub and follow him on Twitter @milessabin. Lars HupelLars is a PhD student in Munich, Germany, working in the area of theorem proving. He has been using Scala for quite a while now, and is known as one of the founders of the typelevel initiative which is dedicated to providing principled, type-driven Scala libraries. He also talks about Haskell and Isabelle a lot. |
||||||
12:15 |
|
|||||||
13:30 |
Often, categorists will speak about "universal properties" when discussing basic constructions. Understanding what these are can be one of the more confusing aspects of coming to terms with category theory. But it turns out that there is one weird trick that lets us take universal properties and translate them directly into executable code. In doing so, we can better understand just what it means for something to be a universal property, and for that matter, how to think of the relationship between functions and data. The insights from this sort of approach are broadly applicable to real-world practice when we think about how to structure our data to capture just what it should, and nothing else. This talk will start from the very basics, and hopefully leave the audience with a taste of practical categorical intuition, summarized in the slogan "Asking what and asking how are asking the same thing."
category-theory
haskell
functional-programming
About the speaker...Gershom BazermanGershom is a software developer in New York City. He is an organizer of the NY Haskell Users Group and the NY Homotopy Type Theory Reading group, and a member of the Haskell.org committee. He has written a number of widely used Haskell packages, most notably the JMacro library for programmatic generation of JavaScript. He has a particular interest in popularizing results of research related to and deriving from the mathematical foundations of computer science. He occasionally contributes blog articles at the Comonad Reader. |
Day 2, 9 Oct starts 13:30 (Track 2)
Workshop: Hands-on introduction to Opaleye
|
||||||
14:30 |
Effect handlers have recently been proposed as a new means of working with compositional effects, and threaten to replace monad transformers. Their key advantage is a cleaner way of expressing semantics since they are defined in terms of algebras. An often misunderstood aspect is how they compare to monad transformers with respect to compositionality of effects. This talk will introduce both methodologies and show how they relate. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available!
haskell
effect-handlers
monads
monad-transformers
functional-programming
About the speaker...Nicolas WuNick has been using Haskell since 2001 while he was an undergraduate at the University of Oxford, where he also obtained his doctorate in Computer Science. He then went to work as a Haskell consultant at Well-Typed LLP before returning to academia. As a postdoctoral researcher he worked principally on unifying the foundations of recursion schemes using category theory. He is currently a lecturer at the University of Bristol, and continues to work on recursion schemes, as well as effect handlers and domain specific languages. |
Day 2, 9 Oct starts 14:30 (Track 2)
Workshop: Hands-on introduction to Opaleye
|
||||||
15:30 |
|
|||||||
15:45 |
GHCJS is a Haskell to JavaScript compiler based on GHC. Among the improvements in the past year are official Cabal integration, support for CPU profiling and an overhaul of the ghcjs-base library. A recent addition is an experimental REPL, making it easier than ever to interact with Haskell in a browser or node.js environment. I will discuss the current state of the project, and explain what impact recent developments like ECMAScript 6 will have on how various Haskell concepts are translated to JavaScript. I'll demonstrate the GHCJS development tools and libraries with some examples of interacting with the JavaScript environment, with a focus on concurrency and event handling.
javascript
web
compiler
haskell
About the speaker...Luite Stegeman: Luite Stegeman has studied computer science at Utrecht University and is the main author of GHCJS, on which he has been working from various places. github: http://github.com/luite |
|||||||
17:00 |
A panel discussion featuring several speakers of the #HaskellX 2015. Join us at the Haskell eXchange in 2016!Want to learn about the latest innovations in Haskell? Join 200+ Haskell and functional programmers to learn and share skills with some of the world's top Haskell experts at the Haskell eXchange 2016 in London. Find out all about Haskell's infrastructure roadmap, learn how Haskell is used in academia and enterprise and discover how Haskell is changing the way our industry tackles complex engineering problems. Early bird tickets already available! About the speaker...Andres LöhAndres Löh is a Haskell consultant and co-owner of Well-Typed LLP. He is based in Regensburg, Germany. He started using Haskell in 1997, when being an undergraduate student of mathematics in Konstanz and has been an enthusiastic functional programmer ever since. Andres obtained a PhD in Computer Science from Utrecht University in 2004, on extending the Haskell language with capabilities for datatype-generic programming. After having been a university lecturer for several years, he joined Well-Typed in 2010. Andres is very interested in applying functional programming to real-world problems, and in particular in datatype-generic programming, domain-specific languages, (dependent) type systems, parallel and concurrent programming, and the theory of version control. |
|||||||
18:00 |
|
CodeNode
CodeNode is the UK's largest venue dedicated to Technology events and was designed to provide a space for Skills Matter's community of software professionals to come together and enjoy meetups, conferences, training and networking events. With fantastic transport links and located in the heart of London's Tech City, Codenode welcomes thousands of engineers each year, who come together to learn and share skills, exoerience and collaborate on projects.
CodeNode features six dedicated event spaces, a large break-out area, complete with fully-licensed bar, reliable wifi, plenty of power sockets, and 6 dedicated event and collaboration spaces.

Sponsorship
If you are interested in sponsoring Haskell eXchange 2015, visit this page.
Line Up 2015
View this year's speakers, topics and workshops/tutorials here.
The Haskell eXchange is an independent conference organised for and by the community. We are therefore looking forward to these year's talks and workshops in particular on:
- Talks about Haskell libraries and tools
- Experience reports on the use of Haskell in various environments
- Tutorials on the use of Haskell itself, or particular Haskell libraries and tools
- Coding techniques, tips and tricks
- Talks about the implementation of Haskell compilers and tools
- Ideas for language design and the future of Haskell
- Impressions of other programming languages that are related to Haskell
There will be three types of session:
- 45 minute talks
- 15 minute lightning talks
- 2+ hour hands on sessions / tutorials
Haskell Infrastructure Hackathon
There will be a Haskell Hackathon following the conference. Find out more here.
Available Packages
-
- 64-BIT SPONSORSHIP
Engage with 100 highly experienced and passionate Haskell developers and mathematicians exploring functional programming, Haskell and the Haskell stack! Show off your team, projects, tools or devices at your #HaskellX conference booth!
Brand Visibility Benefits
- Your logo (large) on all #HaskellXweb pages
- Your own dedicated partner page on skillsmatter.com
- Your logo (large) on all in-venue conference banners
- Visibility of your brand and your support for #HaskellX in regular social media updates.
Engagement Benefits
- Your own booth at #HaskellX (160x80cm)
- Your sponsored message with hot linked logo in the #HaskellX post-conference newsletter
- Two items (leaflet, device, pen or notepad) included in all #HaskellX swag bags
- Two Exhibitor Tickets
- Two Full Conference Tickets to the conference, which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum).
-
- 32-BIT SPONSORSHIP
Brand Visibility Benefits
- Your logo (medium) on #HaskellX web pages
- Your own dedicated partner page on skillsmatter.com
- Your logo (medium) on all in-venue conference banners
- Visibility of your brand and your support for #HaskellX in regular social media updates.
Engagement Benefits
- Your sponsored message with hot linked logo in the #HaskellX post-conference newsletter
- One item (leaflet, device, pen or notepad) included in 150 #HaskellX swag bags
- Two free exhibitor tickets and one full conference ticket, which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum).
-
- 16-BIT SPONSORSHIP
Brand Visibility Benefits
- Your logo (small) on #HaskellX web pages
- Your own dedicated partner page on skillsmatter.com
- Your logo (small) on all in-venue conference banners
-
- SPONSOR THE HASKELL EXCHANGE 2015 PARTY!
Be remembered by all conference attendees, speakers and sponsors attending the party this year! Have your logo printed on the Haskell eXchange 2015 Party beer mats and on highly visible party posters and pop-up banners, which are bound to feature in lots of pictures this year.
Brand Visibility Benefits
- Your logo displayed on the #HaskellX 2015 party beer mats and on the party table pop-up banners;
- Five free tickets to the #HaskellX 2015 Party, which you can gift to your clients and team members;
- Your logo (small) on all in-venue conference banners and on the #HaskellX 2015 Sponsor web pages;
- Your own dedicated partner page on skillsmatter.com;
- Exclusive to two party sponsors only!
-
- SPONSOR THE HASKELL EXCHANGE 2015 T-SHIRTS!
Be remembered! Have your logo printed on all #HaskellX t-shirts, provided to conference attendees, speakers and sponsors attending this year.
Brand Visibility Benefits
- Your logo on all #HaskellX t-shirts
- Exclusive to two t-shirt sponsors only!
-
- SPONSOR THE HASKELL EXCHANGE 2015 ATTENDEE BAGS!
Be remembered! Have your logo printed on all #HaskellX swag bags, provided to conference attendees, speakers and sponsors attending this year.
Brand Visibility Benefits
- Your logo on 150 #HaskellX swag bags
- Exclusive to two swag bag sponsors only!
To discuss sponsorship opportunities please contact the team:
- Phone: +44 (0) 207 183 9040
- Email: sponsors@skillsmatter.com
-
Keynote from Simon Peyton Jones - Into the Core: Understanding GHC’s Intermediate Language
Featuring Simon Peyton Jones
GHC translates all of Haskell into a tiny intermediate language called Core, does a lot of optimisations on Core, and then generates executable code. In this talk I’ll take you on a journey into Core, with several goals. First, if you ever do performance-debugging of a Haskell program you may...
core-to-core haskell-core core ghc haskell-ghc haskellx haskell functional-programming -
Keynote from Simon Marlow - Fun with Haxl
Featuring Simon Marlow
Haxl is a small framework for automatically batching and overlapping data-fetching. It was open-sourced by Facebook in 2014, and is in large-scale production use as part of Facebook's spam-filtering infrastructure. In this talk I'd like to explore some of the ways we can use Haxl to...
research haskell functional-programming -
Keynote from Lennart Augustsson - Giving Haskell Types to a Relational Algebra Library in C++
Featuring Lennart Augustsson
In this talk, Lennart will show how to design a strongly typed interface to an external library. The external library has some rather complex, dynamically checked, types. Making a strongly typed, easy-to-use version of the API uses several Haskell type system extensions, e.g., type level strings,...
types strongly-typed ghc haskellx haskell -
Keynote from Luite Stegeman - Solving the JavaScript Problem
Featuring Luite Stegeman
GHCJS is a Haskell to JavaScript compiler based on GHC. Among the improvements in the past year are official Cabal integration, support for CPU profiling and an overhaul of the ghcjs-base library. A recent addition is an experimental REPL, making it easier than ever to interact with Haskell in a...
javascript web compiler haskell -
Workshop: Haskell’s ultimate challenge: Game programming for Fun and Profit - Part 1
Featuring Ivan Perez
Idealised versions of board and simple arcade games render beautiful snippets of Haskell code. But real games need to deal with user input and output, animation, sound, asset management, UI plasticity, graphics acceleration, concurrency and networking, all of which involve the outside world and...
game-programming haskell functional-programming -
Haskell development with Docker
Featuring San Gillis
Tooling for Haskell development is a hot topic, since one of the biggest grievances in Haskell development is the issue of managing dependencies. Enter Docker, a tool that makes defining and running containers easy. Docker allows you to easily create reproducible environments across different...
docker dependencies container devops haskell functional-programming -
The Ludwig DSL
Featuring Jasper Van der Jeugt
Ludwig is a statically typed, declarative data description language. It's main use case is in Fugue, a product which lets you declare your cloud infrastructure in this language and then takes care of the rest. In this talk, we follow the interesting path from YAML to a statically typed data...
dsls ocaml web haskell -
Haskell goes DevOps
Featuring Vladimir Kirillov
This is a story of an Infrastructure team at Zalora that implemented DevOps using Haskell and Nix.
devops nix haskell functional-programming -
High performance programming in Haskell
Featuring Johan Tibell
In this talk, we'll take a deep dive into how to write high performance Haskell code, using what we've learned while optimizing the core Haskell libraries. We'll focus on understanding the memory layout of Haskell data types and how it can be optimized to make your program run faster....
optimization hpc haskell functional-programming -
JsonGrammar: combinators for bidirectional JSON conversion
Featuring Martijn van Steenbergen
JsonGrammar is a combinator library for expressing bidrectional transformations between JSON expression trees (we use Aeson's Value datatype) and your own custom Haskell datatypes. Instead of writing separate fromJSON and toJSON functions, you write a single expression (a grammar) that...
json haskell functional-programming -
Defining your own Build System with Shake
Featuring Neil Mitchell
Shake, like Make, is a tool for writing build systems. However, unlike Make, Shake features monadic dependencies (your dependencies themselves can depend on the results of previous dependencies), polymorphic dependencies (your dependencies don't have to be files) and stable dependencies (if...
build-systems haskell functional-programming -
A new foundation for refactoring - ghc-exactprint
Featuring Matthew Pickering
In this talk, I will describe the architecture and history of ghc-exactprint. ghc-exactprint is a library which enables programmers to easily specify refactoring operations by directly modifying the GHC AST. By leveraging the GHC parser and a suitable intermediate representation, we can refactor...
refactoring ghc-exactprint haskell-ghc apply-refact haskell-src-exts haskellx haskell functional-programming -
Data Deduplication in Haskell: An Experience Report
Featuring Philipp Kant
Infinipool produces software to make the process of transporting and storing data more efficient. We exploit the fact that a lot of real-world data is highly redundant. By finding these redundancies explicitly, we are able to avoid transporting and storing a large portion of the data. For our...
infinipool haxl servant haskellx haskell functional-programming -
The HdpH Framework for Parallel Distributed Computation
Featuring Blair Archibald
This talk will describe HdpH: A domain specific language and runtime system for distributed parallel computation. We show, by example, the simplicity of the domain specific language and the features required to specify parallel computations. A description of the HdpH runtime system, work-stealing...
hdph hdph-runtime dsl cloud-haskell eden gum gph haskell functional-programming -
From Types to Web Applications
Featuring Alp Mestanogullari
Servant (http://haskell-servant.github.io/) is a recent library for writing web applications with a quite novel approach: users describe web APIs with a type-level DSL. The library then uses that description, which can be inspected and transformed for great good to:
- provide very strong type...
-
Call C functions from Haskell without bindings
Featuring Francesco Mazzoli
Haskell programming in the real world involves interacting with myriad legacy systems and libraries, many of which are written in C and require high-performance interop. inline-c is a package for writing mixed C/Haskell source code that seamlessly invokes native and foreign functions from these...
type-theory concurrency web-technologies inline-c legacy hpc haskell functional-programming -
Scalable and Reliable Video Transcoding in Haskell
Featuring Alfredo Di Napoli
At Iris Connect we are developing a video sharing platform that is being deployed in over a thousand schools worldwide. As part of this process, the hundreds of gigabytes of videos uploaded from customers every day are a central part of our business. In this talk I will present our approach to...
video-transcoding hpc scalability distributed-computing haskellx haskell functional-programming -
Programming with Universal Properties
Featuring Gershom Bazerman
Often, categorists will speak about "universal properties" when discussing basic constructions. Understanding what these are can be one of the more confusing aspects of coming to terms with category theory. But it turns out that there is one weird trick that lets us take universal...
category-theory haskell functional-programming -
Using Haskell as a Thinking Tool
Featuring Andraz Bajt
Sometimes you cannot use Haskell to solve a problem because of external constraints. Despair not! You can still use it to develop your solution. I will talk about my experience designing solution and doing mini proof of concepts in Haskell in order to implement it with some other technology. This...
haskell functional-programming -
Transformers, Handlers in Disguise
Featuring Nicolas Wu
Effect handlers have recently been proposed as a new means of working with compositional effects, and threaten to replace monad transformers. Their key advantage is a cleaner way of expressing semantics since they are defined in terms of algebras. An often misunderstood aspect is how they compare...
effect-handlers monads monad-transformers haskell functional-programming -
Workshop: Haskell’s ultimate challenge: Game programming for Fun and Profit - Part 2
Featuring Ivan Perez
Idealised versions of board and simple arcade games render beautiful snippets of Haskell code. But real games need to deal with user input and output, animation, sound, asset management, UI plasticity, graphics acceleration, concurrency and networking, all of which involve the outside world and...
-
GUI Programming in Haskell: Review & Experiences
Featuring Oliver Charles
Oliver will be discussing the state of GUI programming in Haskell, briefly talking about the options available for application developers in 2015. He'll also touch on his experiences with building an interactive graphical application and where Haskell shines and where it needs to improve.
gui gui-programming haskellx haskell -
Build Your Own Proof Assistant
Featuring Mietek Bak
Are the logical foundations of your favourite programming language not entirely satisfactory? Is your everyday programming work far too useful and practical? Have I got the talk for you! We’ll learn how parametric higher-order abstract syntax (PHOAS) makes it simple and easy to embed a logic in...
program type proof proposition language logic haskell -
2
What Haskell can learn from Scala
Featuring Miles Sabin and Lars Hupel
The opinions about Scala in the Haskell community differ widely. Most will immediately point out reasons why they think Scala is complex and that Haskell is so much better. But is it really? In this talk, we will take a radically different approach: We will outline what Haskell can learn from...
haskell scala functional-programming -
Park Bench Discussion
Featuring Andres Löh
A panel discussion featuring several speakers of the #HaskellX 2015.
-
Haskell eXchange 2019
Two days in London
Back for an eighth instalment, 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...
cryptocurrency fp ghc types functional-programming haskellx haskell -
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...
types functional-programming haskellx haskell -
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.
hackathon hack functional-programming haskellx haskell -
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...
types functional-programming haskellx haskell -
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...
monads types functional-programming haskellx haskell -
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.
monads types functional-programming haskellx haskell -
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.
monads types functional-programming haskell -
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.
clojure akka functional-programming haskellx haskell -
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