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
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



_______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to