
catanzar:
I'm just starting out with Haskell, and I could use some help. I'm trying to create a random list and print it out, which seems simple enough, but has been giving me problems. Here's what I have:
module Main where import IO import Random
randomList :: Random a => a -> a-> [IO a] randomList lbound ubound = randomRIO(lbound, ubound) : randomList lbound ubound
main = do myRandomList <- sequence(randomList(0::Int 255)) putStrLn(show(take(10 myRandomList)))
-----
So, I have tried to make a randomList action which defines an infinite random list, bounded by lbound and ubound. It seems that to print this, I need to convert between randomList, which is of type [IO a] to something like IO [a], which is what sequence should do for me. Then I just want to print out the first 10 elements.
I'm currently getting the error "Only unit numeric type pattern is valid", pointing to 0::Int 255 in the code. I'm not sure what this means.
Missing parenthesis around the (0 :: Int) type annotation.
I'm sure I'm looking at this the wrong way, since I'm new to Haskell and haven't quite wrapped my head around it yet. Maybe you can fix the problem by showing me a more Haskell approach to creating a random list and printing it... =)
For lists, best to use the randomRs function, import System.Random main = do g <- newStdGen print (take 10 (randomRs (0,255) g :: [Int])) Running it: $ runhaskell A.hs [11,90,187,119,240,57,241,52,143,86] Cheers, Don