Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Challenge: Another Infinite Lazy List

by tmoertel (Chaplain)
on Mar 19, 2005 at 01:25 UTC ( #440841=note: print w/ replies, xml ) Need Help??


in reply to Challenge: Another Infinite Lazy List

For comparision with Haskell, we can define R for any given list of factors by folding the merge operator through the list of lists of multiples:

r = foldr merge [] . map (\n -> map (*n) [1..])
We use a duplicate-eating merge:
merge [] ys = ys merge xs [] = xs merge (x:xs) (y:ys) | x < y = x : merge xs (y:ys) | y < x = y : merge (x:xs) ys | otherwise = x : merge xs ys
Sample output:
> take 60 (r [2,3,5]) [2,3,4,5,6,8,9,10,12,14,15,16,18,20,21,22,24,25,26,27,28,30,32,33,34,3 +5,36,38,39,40,42,44,45,46,48,50,51,52,54,55,56,57,58,60,62,63,64,65,6 +6,68,69,70,72,74,75,76,78,80,81,82]


Comment on Re: Challenge: Another Infinite Lazy List
Select or Download Code
Replies are listed 'Best First'.
Re^2: Challenge: Another Infinite Lazy List
by kelan (Deacon) on Mar 19, 2005 at 15:20 UTC

    I guess I don't have enough practice with Haskell yet. When trying to think of an easy way to merge a list of lists I completely forgot about folding. ++ to you.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://440841]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2015-07-31 19:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (280 votes), past polls