Difference between revisions of "User:WillNess"
From HaskellWiki
Line 1:  Line 1:  
−  A perpetual Haskell newbie. I like ''[http://ideone.com/qpnqe this 
+  A perpetual Haskell newbie. I like ''[http://ideone.com/qpnqe this oneliner]'': 
<haskell> 
<haskell> 

−   
+   infinite folding idea due to Richard Bird 
 double staged production idea due to Melissa O'Neill 
 double staged production idea due to Melissa O'Neill 

−   tree folding idea Dave Bayer / 
+   tree folding idea Dave Bayer / improved tree structure 
−  +   Heinrich Apfelmus / simplified formulation Will Ness 

−  +  primes = 2 : _Y ((3:) . gaps 5 

−  +  . foldi (\(x:xs) > (x:) . union xs) [] 

−  +  . map (\p> [p*p, p*p+2*p..])) 

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

+  _Y g = g (_Y g)  multistage production 

−  gaps k s@(c:t)  == minus [k,k+2..] (c:t), k<=c, 
+  gaps k s@(c:t)  == minus [k,k+2..] (c:t), k<=c, 
−   k < c = k : gaps (k+2) s  fused 
+   k < c = k : gaps (k+2) s  fused for better performance 
−   
+   otherwise = gaps (k+2) t  k==c 
</haskell> 
</haskell> 

Revision as of 09:30, 6 August 2013
A perpetual Haskell newbie. I like this oneliner:
 infinite folding idea due to Richard Bird
 double staged production idea due to Melissa O'Neill
 tree folding idea Dave Bayer / improved tree structure
 Heinrich Apfelmus / simplified formulation Will Ness
primes = 2 : _Y ((3:) . gaps 5
. foldi (\(x:xs) > (x:) . union xs) []
. map (\p> [p*p, p*p+2*p..]))
_Y g = g (_Y g)  multistage production
gaps k s@(c:t)  == minus [k,k+2..] (c:t), k<=c,
 k < c = k : gaps (k+2) s  fused for better performance
 otherwise = gaps (k+2) t  k==c
foldi
is on Treelike folds page. union
and more at Prime numbers.
The constructive definition of primes is the Sieve of Eratosthenes:
using standard definition
 . . . or, :) :) .
Trial division sieve is:
If you're put off by selfreferentiality, just replace or on the righthand side of equations with , but even ancient Greeks knew better.