素数の無限列生成
ちょっと感動したのでメモ。もうちょっと長いコードかと思っていたらこれでできるんだな。
primes = sieve [2..] where sieve (s:ss) = s : sieve (filter (\x -> (mod x s) > 0) ss)
primesってやると割り込みをかけるまで永遠に素数列が表示され続ける。
*Main> primes [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,Interrupted.