
On 24 Sep 2008, at 10:13 pm, Evan Laforge wrote:
For one approach, check out 'replicate' to make copies of something, and then 'sequence' to run them and return a list.
Thanks, I haven't found anything that explains 'sequence' well yet, but I'll keep looking. On 24 Sep 2008, at 10:13 pm, John Van Enk wrote:
And the one liner:
(rand 1 10) >>= return . (\v -> take v [1..10])
my last attempt before emailing was (rand 1 10 ) >>= (\x -> take x [1..10]) So close! :) I can see now, with all the examples, why the return is needed, but not why the composition operator is. Something for me to look into. Thanks for the input. On 24 Sep 2008, at 10:25 pm, Henning Thielemann wrote:
If you only need arbitrary numbers, not really random ones, you should stay away from IO: http://www.haskell.org/haskellwiki/Humor/Erlk%C3%B6nig http://www.haskell.org/haskellwiki/ Haskell_programming_tips#Separate_IO_and_data_processing
You're right, arbritary will be fine. It's relatively easy to get random numbers in other languages so I just started there, but while researching I had seen a few people lament the tying up of IO with rands, but I couldn't understand some of the other solutions presented. Thanks for the links, I'll give them a read.
On Wed, Sep 24, 2008 at 5: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.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- /jve