>>>>> "Benjamin" == Benjamin Bach <benjaom...@gmail.com> writes:

    Benjamin> Supposing I have the following code:
    >> module Main(main) where main = putStr (show [])

    Benjamin> I will get these errors from GHC and Hugs respectively:

    >> Main.hs:2:16: Ambiguous type variable `a' in the constraint:
    >> `Show a' arising from a use of `show' at Main.hs:2:16-22
    >> Probable fix: add a type signature that fixes these type
    >> variable(s)

    >> ERROR "src/Main.hs":2 - Unresolved top-level overloading ***
    >> Binding : main *** Outstanding context : Show b

    Benjamin> But if I change my code to the following, it will
    Benjamin> compile.

    >> module Main(main) where main = putStr (show [1])

    Benjamin> I have no problems typing in "putStr (show [])" in
    Benjamin> Hugs... runs fine.  So what's wrong? I've really tried
    Benjamin> hard to think of an explanation, but with no luck..

I would say that it is complaining that it doesn't know what type of
empty list you want it to show. of course, they will all display the
same at run time, but it's compile time that is the problem.
-- 
Colin Adams
Preston Lancashire
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to