Outstanding context : (Num b, Random b)

Hi, I am very new to haskell. Could anyone please explain why these two things are not equivalent: m2 = do a <- (drawInt 1 10) print a drawInt :: Int -> Int -> IO Int drawInt x y = getStdRandom (randomR (x,y)) m1 = do b <- getStdRandom (randomR (1,10)) print b the second one produces *** Binding : m1 *** Outstanding context : (Num b, Random b) in Hugs. thanks horsh

"horsh" wrote:
I am very new to haskell.
Could anyone please explain why these two things are not equivalent:
m2 = do a <- (drawInt 1 10) print a drawInt :: Int -> Int -> IO Int drawInt x y = getStdRandom (randomR (x,y))
m1 = do b <- getStdRandom (randomR (1,10)) print b
the second one produces *** Binding : m1 *** Outstanding context : (Num b, Random b)
In Haskell, numeric literals are overloaded. "1" could be an Int,
Integer, Rational, Float etc. randomR can use any of Int, Integer,
Float or Double, but it needs to know which. Adding an explicit type
signature to one of the literals will eliminate the error, e.g.:
m1 = do b <- getStdRandom (randomR (1,10 :: Int))
print b
--
Glynn Clements
participants (3)
-
"horsh
-
Glynn Clements
-
Ketil Malde