What is wrong with this function ?
test :: Show s => s
test = \"asdasd\"
String is an instance of the Show class, so it see
Yes, String is an instance of Show. But that doesn't allow using a string as an abritary Show value. 1 can be Num a => a because there's an 1 :: Integer, an 1 :: Double, an 1 :: Word16, etc. If "asdasd" could be of type Show a => a, there would be "asdasd" :: Bool, "asdasd" :: String, "asdasd" :: Int, etc. There isn't. Therfore, "asdasd" can't be of type Show a => a. The type of a string constant doesn't get much more general than String.