Hello, On 12/1/06, Huazhi (Hank) Gong <[EMAIL PROTECTED]> wrote:
Hello,all My intention is to generate 50 random coordinates like (x,y). myrand :: Int myrand = randomRIO(1::Int, 100)
When we look at the type of randomRIO we see: randomRIO :: forall a. (Random a) => (a, a) -> IO a You're giving it a tuple of Int, so we can substitute Int for 'a' in that type signature: myrand :: IO Int
rf=[(myrand, myrand) | a <- [1..50]]
Here you are creating a list of tuples. We see from above that the type of the tuples would be (IO Int, IO Int), so rf :: [(IO Int, IO Int)]. This is because we have not run the IO action to generate the Int yet.
My short program is like this. However, GHCI say that the return type of randomRIO is IO a while the function defined by me is Int. Since I only need a integral type as my cooridinate, could you tell me how to fix this?
Your type signature tries to make a claim that myrand has type Int, but the compiler will disagree because of that pesky IO type. Yet Another Haskell Tutorial[1] seems to have a section on the pesky IO type. [1] http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf I hope that helps, Jason _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe