[Haskell-cafe] Beginner question

Colin Paul Adams colin at colina.demon.co.uk
Fri Jan 2 12:05:06 EST 2009

>>>>> "Benjamin" == Benjamin Bach <benjaoming at 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

More information about the Haskell-Cafe mailing list