Haskell Type System

1–2 days

In this course, we are providing an in-depth look into Haskell’s type system, including the various language extensions that the Glasgow Haskell Compiler (GHC) has to offer.

Haskell is an evolving language. With each new GHC release, there are some new features, many of which add extra power to Haskell’s already remarkable type system. But which extensions are widely used? Which are stable? How can one find out how they really work? While many features are really interesting, documentation is often scarce, and scattered around in various places such as blog posts and academic papers.

In this course, we’ll provide a much needed overview, and then discuss the most important concepts systematically: from higher-rank polymorphism over GADTs and data kinds to type families and System FC (the formal system that GHC’s core language is based on). We’ll discuss how to use all these features, provide motivation and typical use cases, and warn about possible pitfalls. The course is hands-on, a combination of presentations and exercises. Exercises consist of carefully chosen small examples that illustrate the concepts discussed, and are often based on real-world libraries that you can find on Hackage.

This course is designed such that Fast Track to Haskell covers all its prerequisites. However, the course is likely to be enjoyed more by participants who already have gained some practical experience in writing Haskell code.

Topics

Polymorphism

  • Parametric polymorphism revisited
  • Universal vs. existential quantification of types
  • Higher-rank polymorphism

Types and Kinds

  • Haskell’s kind system
  • Working with GADTs
  • Promoting datatypes to kinds
  • Kind polymorphism

Type-level Programming

  • Type families
  • Type equality
  • Constraint kinds
  • System FC

Duration

The minimal duration of this course is one full day. The course can easily be extended to two days, by giving more time for additional exercises and examples, covering some of topics in more detail, and adding some additional topics.

If delivered remotely, it is typically advisable to spread out the course sessions over a few more days, to provide the opportunity for participants to work on exercises and get feedback on their work in between sessions.

Cost

The base price of this course is GBP 1750 (one lecturer, one day, on-site). The base price excludes VAT and any other applicable taxes as well as travel costs which depend on the location of the course venue.

Prices for extending the course or adding additional lecturers (for larger on-site groups) on request.

We offer on-site consulting in combination with on-site courses at a reduced daily rate.

If you are interested in this course, or for more information, please email us with as many details as possible.