Everyday Extensions

Master Haskell extensions

Language extensions can be confusing. They change how the compiler works, add functionality, and change the syntax of the official Haskell specification, creating a bunch of possible ways to write Haskell. But changing the language is not as terrifying in practice. Most GHC extensions behave like switches: a feature could be either on or off.

What you’ll learn

  • Comprehensive understanding of Haskell extensions.
  • Applications of Haskell extensions in various development scenarios.
  • Ability to assess extension safety and necessity for a particular module.
  • Best ways to integrate library dependencies into your projects.
  • Practical skills in managing extensions with awareness.

Course Content

  • Everyday Extensions –> 8 lectures • 1hr 7min.

Everyday Extensions

Requirements

Language extensions can be confusing. They change how the compiler works, add functionality, and change the syntax of the official Haskell specification, creating a bunch of possible ways to write Haskell. But changing the language is not as terrifying in practice. Most GHC extensions behave like switches: a feature could be either on or off.

The list of Haskell extensions is quite extensive and not easy to navigate:

  • Which extensions are common and safe to use?
  • Which extensions are considered harmful for production use?
  • Which extensions are required for the current module to compile and which ones were just copied from some other module?

Extensions in Haskell are unavoidable. There are extensions that some developers are addicted to and carry to all their projects. There are popular libraries that heavily rely on extensions and impose them upon their users.

This course is for people who want to understand extensions commonly seen in the wild. We will cover some commonly used extensions and look at a couple of Haskell libraries that can’t be used without extensions to get a practical understanding. By the end of the course, you won’t be blindly copying extensions from one module to another but will carry them along with awareness.

This course requires a basic understanding of Haskell syntax. You don’t need experience working with any of the libraries mentioned in the course.

Get Tutorial