Ambiguous type variable

Olaf Chitil olaf@cs.york.ac.uk
Wed, 22 Jan 2003 18:42:37 +0000


Jorge Adriano wrote:
> This works fine, as expected
> > f :: (Num a, Random a) => Int -> [a]
> > f = randomRs (0,1).mkStdGen
> 
> If I skip the type signature, though, I get the following error messages:
> ...

You just tripped over the infamous monomorphic restriction of Haskell:
A variable that is defined like a constant (no arguments before "=") is
not allowed to be overloaded (have a class context), except when the
type of the variable is explicitly given.
Maybe it would be possible to generate a more informative type error
message in such cases? 

Olaf

-- 
OLAF CHITIL, 
 Dept. of Computer Science, The University of York, York YO10 5DD, UK. 
 URL: http://www.cs.york.ac.uk/~olaf/
 Tel: +44 1904 434756; Fax: +44 1904 432767