Show: Add ShowS for ", "
authorBen Gamari <ben@smart-cactus.org>
Thu, 2 Mar 2017 23:37:23 +0000 (18:37 -0500)
committerBen Gamari <ben@smart-cactus.org>
Fri, 3 Mar 2017 00:58:01 +0000 (19:58 -0500)
This is produced often enough in derived Show instances that it is likely
worthwhile defining it once.

compiler/prelude/PrelNames.hs
compiler/typecheck/TcGenDeriv.hs
libraries/base/GHC/Show.hs

index 470b736..0ae3867 100644 (file)
@@ -751,13 +751,14 @@ prec_RDR                = varQual_RDR  rEAD_PREC (fsLit "prec")
 pfail_RDR               = varQual_RDR  rEAD_PREC (fsLit "pfail")
 
 showList_RDR, showList___RDR, showsPrec_RDR, shows_RDR, showString_RDR,
-    showSpace_RDR, showParen_RDR :: RdrName
+    showSpace_RDR, showCommaSpace_RDR, showParen_RDR :: RdrName
 showList_RDR            = varQual_RDR gHC_SHOW (fsLit "showList")
 showList___RDR          = varQual_RDR gHC_SHOW (fsLit "showList__")
 showsPrec_RDR           = varQual_RDR gHC_SHOW (fsLit "showsPrec")
 shows_RDR               = varQual_RDR gHC_SHOW (fsLit "shows")
 showString_RDR          = varQual_RDR gHC_SHOW (fsLit "showString")
 showSpace_RDR           = varQual_RDR gHC_SHOW (fsLit "showSpace")
+showCommaSpace_RDR      = varQual_RDR gHC_SHOW (fsLit "showCommaSpace")
 showParen_RDR           = varQual_RDR gHC_SHOW (fsLit "showParen")
 
 undefined_RDR :: RdrName
index 533664e..c46c291 100644 (file)
@@ -1125,6 +1125,7 @@ gen_Show_binds get_fixity loc tycon
     -----------------------------------------------------------------------
     data_cons = tyConDataCons tycon
     shows_prec = mk_FunBind loc showsPrec_RDR (map pats_etc data_cons)
+    comma_space = nlHsVar showCommaSpace_RDR
 
     pats_etc data_con
       | nullary_con =  -- skip the showParen junk...
@@ -1174,7 +1175,7 @@ gen_Show_binds get_fixity loc tycon
                 -- Assumption for record syntax: no of fields == no of
                 -- labelled fields (and in same order)
              show_record_args = concat $
-                                intersperse [mk_showString_app ", "] $
+                                intersperse [comma_space] $
                                 [ [show_label lbl, arg]
                                 | (lbl,arg) <- zipEqual "gen_Show_binds"
                                                         labels show_args ]
index c52824b..6965335 100644 (file)
@@ -39,7 +39,7 @@ module GHC.Show
 
         -- Show support code
         shows, showChar, showString, showMultiLineString,
-        showParen, showList__, showSpace,
+        showParen, showList__, showCommaSpace, showSpace,
         showLitChar, showLitString, protectEsc,
         intToDigit, showSignedInt,
         appPrec, appPrec1,
@@ -344,6 +344,8 @@ showParen b p   =  if b then showChar '(' . p . showChar ')' else p
 showSpace :: ShowS
 showSpace = {-showChar ' '-} \ xs -> ' ' : xs
 
+showCommaSpace :: ShowS
+showCommaSpace = showString ", "
 -- Code specific for characters
 
 -- | Convert a character to a string using only printable characters,