Make GHC.IO.Buffer.summaryBuffer strict
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 2 Oct 2017 14:28:35 +0000 (15:28 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 3 Oct 2017 08:52:39 +0000 (09:52 +0100)
I came across this when debugging something else.  Making it strict
improves the code slightly without affecting behaviour.

libraries/base/GHC/IO/Buffer.hs

index 33eee63..f3cabb2 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Trustworthy, BangPatterns #-}
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
 {-# OPTIONS_GHC -funbox-strict-fields #-}
 
@@ -264,7 +264,8 @@ foreign import ccall unsafe "memmove"
    memmove :: Ptr a -> Ptr a -> CSize -> IO (Ptr a)
 
 summaryBuffer :: Buffer a -> String
-summaryBuffer buf = "buf" ++ show (bufSize buf) ++ "(" ++ show (bufL buf) ++ "-" ++ show (bufR buf) ++ ")"
+summaryBuffer !buf  -- Strict => slightly better code
+   = "buf" ++ show (bufSize buf) ++ "(" ++ show (bufL buf) ++ "-" ++ show (bufR buf) ++ ")"
 
 -- INVARIANTS on Buffers:
 --   * r <= w