Fingerprint: Add Show instance for easier debugging
authorNiklas Hamb├╝chen <mail@nh2.me>
Thu, 22 Aug 2013 02:18:25 +0000 (11:18 +0900)
committerAustin Seipp <aseipp@pobox.com>
Thu, 22 Aug 2013 21:22:24 +0000 (16:22 -0500)
Signed-off-by: Austin Seipp <aseipp@pobox.com>
GHC/Fingerprint/Type.hs

index 91d7250..ee209db 100644 (file)
 module GHC.Fingerprint.Type (Fingerprint(..)) where
 
 import GHC.Base
+import GHC.List (length, replicate)
+import GHC.Num
+import GHC.Show
 import GHC.Word
+import Numeric (showHex)
 
 -- Using 128-bit MD5 fingerprints for now.
 
 data Fingerprint = Fingerprint {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64
   deriving (Eq, Ord)
 
+instance Show Fingerprint where
+  show (Fingerprint w1 w2) = hex16 w1 ++ hex16 w2
+    where
+      -- | Formats a 64 bit number as 16 digits hex.
+      hex16 :: Word64 -> String
+      hex16 i = let hex = showHex i ""
+                 in replicate (16 - length hex) '0' ++ hex