Difference between revisions of "User:WillNess"
From HaskellWiki
(if you're put off by selfreferentiality) 
m 

(7 intermediate revisions by the same user not shown)  
Line 1:  Line 1:  
−  I'm interested in Haskell. 

⚫  
−  
⚫  
<haskell> 
<haskell> 

−   
+   infinite folding due to Richard Bird 
−   double staged 
+   double staged primes production due to Melissa O'Neill 
−   tree folding idea 
+   tree folding idea Heinrich Apfelmus / Dave Bayer 
−  primes = 2 : 
+  primes = 2 : _Y ((3:) . gaps 5 
−  +  . foldi (\(x:xs) > (x:) . union xs) [] 

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

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

−  gaps k s@(c:t) 

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

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

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

+  _Y g = g (_Y g)  multistage production via Y combinator 

+  
+  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 

</haskell> 
</haskell> 

<code>foldi</code> is on [[Fold#Treelike_foldsTreelike folds]] page. <code>union</code> and more at [[Prime numbers#Sieve_of_EratosthenesPrime numbers]]. 
<code>foldi</code> is on [[Fold#Treelike_foldsTreelike folds]] page. <code>union</code> and more at [[Prime numbers#Sieve_of_EratosthenesPrime numbers]]. 

−  The 
+  The constructive definition of primes is the Sieve of Eratosthenes: 
−  
−  ::::<math>\textstyle\mathbb{S} = \mathbb{N}_{2} \setminus \bigcup_{p\in \mathbb{S}} \{n p:n \in \mathbb{N}_{p}\}</math> 

−  
−  where 

−  ::::<math>\textstyle\mathbb{ 
+  ::::<math>\textstyle\mathbb{S} = \mathbb{N}_{2} \setminus \bigcup_{p\in \mathbb{S}} \{p\,q:q \in \mathbb{N}_{p}\}</math> 
+  using standard definition 

+  ::::<math>\textstyle\mathbb{N}_{k} = \{ n \in \mathbb{N} : n \geq k \}</math>   . . . or,  <math>\textstyle\mathbb{N}_{k} = \{k\} \bigcup \mathbb{N}_{k+1}</math> . 

−  Trial division sieve: 
+  Trial division sieve is: 
−  ::::<math>\textstyle\mathbb{T} = \{n \in \mathbb{N}_{2}: (\ 
+  ::::<math>\textstyle\mathbb{T} = \{n \in \mathbb{N}_{2}: (\forall p \in \mathbb{T})(2\leq p\leq \sqrt{n}\, \Rightarrow \neg{(p \mid n)})\}</math> 
−  If you're put off by selfreferentiality, just replace <math>\mathbb{S}</math> or <math>\mathbb{T}</math> on the righthand side of equations with <math>\mathbb{N}_{2}</math>. 
+  If you're put off by selfreferentiality, just replace <math>\mathbb{S}</math> or <math>\mathbb{T}</math> on the righthand side of equations with <math>\mathbb{N}_{2}</math>, but even ancient Greeks knew better. 
Latest revision as of 11:45, 8 April 2015
I like this oneliner:
 infinite folding due to Richard Bird
 double staged primes production due to Melissa O'Neill
 tree folding idea Heinrich Apfelmus / Dave Bayer
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 via Y combinator
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.