[Haskell-beginners] arbitrary rank polymorphism and ghc language pragmas