Of course if you want to do it to code independantly of type you need to redifine show: data ShowHex = ShowHex class ShowDict t a where showDict :: a -> ShowS instance ShowDict ShowHex Int where showDict a = showHex a test :: ShowDict t a => t -> a -> ShowS test _ a = showDict a main = putStrLn $ (test ShowHex 27) "" Keean. Keean Schupke wrote:
Easy:
data ShowHex a instance Show (ShowHex a) where showsPrec _ (ShowHex a) = showHex a
main = putStrLn $ (show (ShowHex 27))
Here, with labelled instances you would write:
show ShowHex 27
instead you write:
show (ShowHex 27)
Keean.
George Russell wrote:
Keean Schupke wrote:
Do you need a language extension at all? You can certainly do it with the existing extensions!
data ShowDict a instance Show (ShowDict a) where showsPrec _ (ShowDict a) = ...
I don't understand. How does that help you to, for example, use a function which requires Show Int but (say) substitute the standard function for which which shows in hexadecimal?
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell