Template Haskell is subtly broken
Template Haskell appears to be subtly broken with this patch. Here a couple of examples of things that don't behave like I'd expect them to:
λ> putStrLn $([t| Int -> Int |] >>= stringE . pprint)
(->) GHC.Types.Int GHC.Types.Int GHC.Types.Int
λ> putStrLn $(reify ''(->>) >>= stringE . show)
TyConI (TySynD GHC.Prim.-> [] (AppT ArrowT (PromotedT GHC.Types.Matchable)))