I was wondering if there was a way to do it in "pure" Haskell (i.e., no
GHC pragmas required), and also the specific reason for why the above
example doesn't work without the pragma (I think it's just that in
general a -> b is not syntactically allowed for type specifiers within
instance declarations)?