Difference between revisions of "User:WillNess"
From HaskellWiki
Line 4:  Line 4:  
<haskell> 
<haskell> 

⚫  
+   inifinte folding idea due to Richard Bird 

−  where 

⚫  
−  g xs = 3 : (gaps 5 $ foldi (\(q:qs) > (q:) . union qs) 

+   tree folding idea Dave Bayer / simplified formulation Will Ness 

−  [[p*p, p*p+2*p..]  p < xs]) 

+  primes = 2 : g (fix g) 

−  +  where 

−  +  g ps = 3 : gaps 5 (foldi (\(q:qs) > (q:) . union qs) 

−  +  [[p*p, p*p+2*p..]  p < ps]) 

+  gaps k s@(c:t) 

+   k < c = k : gaps (k+2) s   k<=c = minus [k,k+2..] s 

+   True = gaps (k+2) t  fused to avoid a space leak 

fix g = xs where xs = g xs  global defn to avoid space leak 
fix g = xs where xs = g xs  global defn to avoid space leak 

</haskell> 
</haskell> 

−  <code>foldi</code> is on [[Fold#Treelike_foldsTreelike folds]]. More at [[Prime numbers#Sieve_of_EratosthenesPrime numbers]]. 
+  <code>foldi</code> is on [[Fold#Treelike_foldsTreelike folds]] page. More at [[Prime numbers#Sieve_of_EratosthenesPrime numbers]]. 
Revision as of 15:25, 7 August 2011
I am a newbie, interested in Haskell.
I like this:
 inifinte folding idea due to Richard Bird
 double staged production idea due to Melissa O'Neill
 tree folding idea Dave Bayer / simplified formulation Will Ness
primes = 2 : g (fix g)
where
g ps = 3 : gaps 5 (foldi (\(q:qs) > (q:) . union qs)
[[p*p, p*p+2*p..]  p < ps])
gaps k s@(c:t)
 k < c = k : gaps (k+2) s   k<=c = minus [k,k+2..] s
 True = gaps (k+2) t  fused to avoid a space leak
fix g = xs where xs = g xs  global defn to avoid space leak
foldi
is on Treelike folds page. More at Prime numbers.