GHC extensions to Haskell

We hope that extensions or variants of the language may appear, incorporating experimental features.

– Haskell Report version 1.0, April 1990

If you’re new to using GHC language extensions, start here:

First extensions

We recommend these first – some of them because they are very common and necessary; some because they make some bit of syntax a little nicer; some because they make something explicit for learning purposes that we find invaluable. All are safe to use.

Type-level fun

  • ExplicitForAll
  • GADTs
  • TypeFamilies
  • KindSignatures
  • PolyKinds
  • DataKinds
  • FunctionalDependencies
  • MultiParamTypeClasses
  • FlexibleInstances
  • FlexibleContexts
  • RankNTypes
  • TypeInType

Template Haskell

As yet unclassified

A non-comprehensive list:


You are not likely to need these extensions; we explain them only for historical interest.

Getting a list from GHC

Try running this command in your terminal:

$ ghc --supported-extensions | grep -v "^No" | column

Join Type Classes for courses and projects to get you started and make you an expert in FP with Haskell.