Separate thousands when printing allocated bytes
authorErlend Hamberg <erlend@hamberg.no>
Thu, 6 Mar 2014 22:27:29 +0000 (23:27 +0100)
committerAustin Seipp <austin@well-typed.com>
Tue, 22 Apr 2014 03:30:20 +0000 (22:30 -0500)
When printing allocated bytes (`:set +s` in ghci), separate thousands
to make it easier to read large allocations sizes, e.g. “1,200,000
bytes”.

Signed-off-by: Austin Seipp <austin@well-typed.com>
ghc/GhciMonad.hs

index 54e7e0c..a4abe32 100644 (file)
@@ -316,7 +316,12 @@ printTimes dflags allocs psecs
             secs_str = showFFloat (Just 2) secs
         putStrLn (showSDoc dflags (
                  parens (text (secs_str "") <+> text "secs" <> comma <+>
-                         text (show allocs) <+> text "bytes")))
+                         text (separateThousands allocs) <+> text "bytes")))
+  where
+    separateThousands n = reverse . sep . reverse . show $ n
+      where sep n'
+              | length n' <= 3 = n'
+              | otherwise = take 3 n' ++ "," ++ sep (drop 3 n')
 
 -----------------------------------------------------------------------------
 -- reverting CAFs