X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FShow.lhs;h=1401241c1bbe58465322238689e15e8f6ce0003b;hb=281853c0c595211e4a56c547f475f1949da46674;hp=dd931b8248799a2a67fcfb71b28b4f3ac475afd5;hpb=b706340c451952adf230b5b8daecad8a1f34d714;p=ghc-base.git diff --git a/GHC/Show.lhs b/GHC/Show.lhs index dd931b8..1401241 100644 --- a/GHC/Show.lhs +++ b/GHC/Show.lhs @@ -24,6 +24,7 @@ module GHC.Show shows, showChar, showString, showParen, showList__, showSpace, showLitChar, protectEsc, intToDigit, digitToInt, showSignedInt, + appPrec, appPrec1, -- Character operations isAscii, isLatin1, isControl, isPrint, isSpace, isUpper, @@ -74,6 +75,12 @@ showList__ showx (x:xs) s = '[' : showx x (showl xs) where showl [] = ']' : s showl (y:ys) = ',' : showx y (showl ys) + +appPrec, appPrec1 :: Int + -- Use unboxed stuff because we don't have overloaded numerics yet +appPrec = I# 10# -- Precedence of application: + -- one more than the maximum operator precedence of 9 +appPrec1 = I# 11# -- appPrec + 1 \end{code} %********************************************************* @@ -117,19 +124,18 @@ instance Show Int where instance Show a => Show (Maybe a) where showsPrec _p Nothing s = showString "Nothing" s - showsPrec (I# p#) (Just x) s - = (showParen (p# >=# 10#) $ + showsPrec p (Just x) s + = (showParen (p > appPrec) $ showString "Just " . - showsPrec (I# 10#) x) s + showsPrec appPrec1 x) s instance (Show a, Show b) => Show (Either a b) where - showsPrec (I# p#) e s = - (showParen (p# >=# 10#) $ + showsPrec p e s = + (showParen (p > appPrec) $ case e of - Left a -> showString "Left " . showsPrec (I# 10#) a - Right b -> showString "Right " . showsPrec (I# 10#) b) + Left a -> showString "Left " . showsPrec appPrec1 a + Right b -> showString "Right " . showsPrec appPrec1 b) s - \end{code}