[Haskell-cafe] Random question

Iain Barnett iainspeed at gmail.com
Wed Sep 24 17:17:04 EDT 2008


Your forgetfulness boosted my ego for a few seconds - I wasn't the  
only one! :)

Thanks very much, that's a big help.

Iain


On 24 Sep 2008, at 10:10 pm, Lev Walkin wrote:

> forgot return, of course:
>
> > myTake :: IO [Int]
> > myTake = do
> >     n <- rand 1 10
> >     return $ take n [1..10]
>
>
> Lev Walkin wrote:
>> Iain Barnett wrote:
>>> Hi,
>>>
>>> I have a function, that produces a random number between two  
>>> given numbers
>>>
>>> rand :: Int -> Int -> IO Int
>>> rand low high = getStdRandom (randomR (low,high))
>>>
>>>
>>> (Naively) I'd like to write something like
>>>
>>> take (rand 1 10 ) [1..10]
>>>
>>> and see [1,2,3,4] ... or anything but nasty type-error messages.
>> myTake :: IO [Int]
>> myTake = do
>>     n <- rand 1 10
>>     take n [1..10]
>> or
>> myTake = rand 1 10 >>= \n -> take n [1..10]
>> or
>> myTake = rand 1 10 >>= flip take [1..10]
>>> I'm reading about 6 tutorials on monads simultaneously but still  
>>> can't crack this simple task, and won't pain you with all the  
>>> permutations of code I've already tried. It's a lot, and it ain't  
>>> pretty.
>>>
>>> Would anyone be able to break away from C/C++ vs Haskell to help?  
>>> Just a point in the right direction or a good doc to read,  
>>> anything that helps will be much appreciated.
>> Monad enlightenment happens after 7'th monad tutorial. Verified by me
>> and a few of my friends.
>



More information about the Haskell-Cafe mailing list