I’m writting some programs in Haskell, dealing with a lot of basic types like Word32/Word64 etc..
I use ghci to test the functions frequently, see the results in terminal.
To be convenient and fast, I always show data in hexadecimal e.g.
data Human = M Int | F Int
instance Show Human where
show M x = printf "man, age %d" x
show F x = printf "woman, age %d" x
but I want basic types to be showed in hexadecimal (espacially in ghci).
I found instance declaration cannot be overridden.
and I don’t want to warp all of them up like:
newtype MyInt = MyInt Int
instance Show MyInt where
...
It looks a little bit stupid.
Can I modify some code in the package base for ghc?
I just want everything becoming “hex”. I just want ghci showing “hex”. how could I achieve it?
EDIT
Since all of us agree that override Show is not proper and impractical,
Any answer of “better ways to show Numeric in hexadecimal in ghci” is welcomed.
That would be abusing the
Showinstance. It’s not really meant for formatting. If you want to show something in hexadecimal, just use a function to do the conversion. For example, you can useshowHexfromNumericto make a small helper like this: