Hello. I'm Yoshikuni Jujo. I want to correct ppr_dec of Language.Haskell.TH.Ppr.
Now: ppr $ FunD (mkName "$$") [Clause [] (NormalB $ VarE $ mkName "x") []] => $$ = x but I want: ppr $ FunD (mkName "$$") [Clause [] (NormalB $ VarE $ mkName "x") []] => ($$) = x I'll send patch. -- module Language.Haskell.TH.Ppr ... isOp :: String -> Bool isOp = all (`elem` "!#$%&*+./<=>?@\\^|-~:") ppr_dec _ (FunD f cs) | isOp $ nameBase f = vcat $ map (\c -> parens (ppr f) <+> ppr c) cs | otherwise = vcat ... ... ppr_dec _ (SigD f t) | isOp $ nameBase f = parens (ppr f) <+> text "::" <+> ppr t | otherwise = ppr f ...
diff --git a/Language/Haskell/TH/Ppr.hs b/Language/Haskell/TH/Ppr.hs index 4096d9e..78d422a 100644 --- a/Language/Haskell/TH/Ppr.hs +++ b/Language/Haskell/TH/Ppr.hs @@ -239,7 +239,11 @@ instance Ppr Dec where ppr_dec :: Bool -- declaration on the toplevel? -> Dec -> Doc -ppr_dec _ (FunD f cs) = vcat $ map (\c -> ppr f <+> ppr c) cs +ppr_dec _ (FunD f cs) + | isOp $ nameBase f = vcat $ map (\c -> parens (ppr f) <+> ppr c) cs + | otherwise = vcat $ map (\c -> ppr f <+> ppr c) cs + where + isOp = all (`elem` "!#$%&*+./<=>?@\\^|-~:") ppr_dec _ (ValD p r ds) = ppr p <+> pprBody True r $$ where_clause ds ppr_dec _ (TySynD t xs rhs) @@ -253,7 +257,11 @@ ppr_dec _ (ClassD ctxt c xs fds ds) $$ where_clause ds ppr_dec _ (InstanceD ctxt i ds) = text "instance" <+> pprCxt ctxt <+> ppr i $$ where_clause ds -ppr_dec _ (SigD f t) = ppr f <+> text "::" <+> ppr t +ppr_dec _ (SigD f t) + | isOp $ nameBase f = parens (ppr f) <+> text "::" <+> ppr t + | otherwise = ppr f <+> text "::" <+> ppr t + where + isOp = all (`elem` "!#$%&*+./<=>?@\\^|-~:") ppr_dec _ (ForeignD f) = ppr f ppr_dec _ (InfixD fx n) = pprFixity n fx ppr_dec _ (PragmaD p) = ppr p
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs