[Haskell-beginners] Question about List Type Constraint and Null

aditya siram aditya.siram at gmail.com
Sat Jan 22 07:03:07 CET 2011


Hi all,
The following function gives me an "Ambiguous type variable `a' in the
constraint: `Read a' arising from a use of `res'" error:
  test :: Read a => String -> Maybe [(a,String)]
  test s = if null res then
             Nothing
           else
             Just $ fst $ head res
           where
             res = reads s

The reason as 'jmcarthur' so patiently explained on IRC is that 'res'
is used twice and the type constraint 'a' is different for each use,
hence the ambiguity. I get that.

But I have a further question why should 'null ...' care about the
type of its list argument? Isn't it polymorphic?  So it shouldn't make
a difference that the 'a' inside res is ambiguous because we know for
sure that it always returns a list of some kind.

Thanks,
-deech



More information about the Beginners mailing list