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 <[EMAIL PROTECTED]> 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

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to