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

Reply via email to