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

Reply via email to