Как переопределить экземпляр некоторых базовых типов в Haskell ?

Я пишу некоторые программы на Haskell, имея дело с множеством основных типов, таких как Word32 / Word64 и т. Д. Я часто использую ghci для тестирования функций, смотрю результаты в терминале.

Для удобства и скорости я всегда показываю данные в шестнадцатеричном формате, например

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

но я хочу, чтобы базовые типы отображались в шестнадцатеричном виде (особенно в ghci). Я обнаружил, что объявление экземпляра нельзя переопределить. и я не хочу искажать их все, как:

newtype MyInt = MyInt Int
instance Show MyInt where
    ...

Это выглядит немного глупо.

Могу ли я изменить код в пакете base для ghc? Я просто хочу, чтобы все стало "наговором". Я просто хочу, чтобы ghci показывал "шестнадцатеричный". как я могу этого добиться?

РЕДАКТИРОВАТЬ

Поскольку все мы согласны с тем, что переопределение Show неуместно и непрактично, Приветствуется любой ответ «лучше показать числа в шестнадцатеричной системе счисления в ghci».

5
задан Nybble 15 February 2012 в 14:06
поделиться