import Data.Dynamic
default(Integer,Double)
a :: Num a => a
a = 5
-- show :: Show a => a -> String
-- toDyn :: Typeable a => a -> Dynamic
main :: IO ()
-- main = print $ show a -- *** THIS LINE WORKS WELL
main = print $ toDyn a -- *** THIS LINE LEADS TO AN AMBIGUOUS TYPE ERROR
I don’t understand why the first “main” version works, and not the second.
Is there someone who can help me ?
Thanks in advance for your reply.
From the Haskell report:
Your example fails because unlike
Show,Typeableis not one of the classes specified in the third point, so no defaulting is performed.