The explain package

explain has a large number of extensions enabled by default: multi-parameter typeclasses, Template Haskell, arrow
syntax, and so on. This is mainly for convenience. If necessary, flags to turn certain extension on and off will be
added in future versions.