11

私はHaskellを初めて使用し、ストリーム処理スタイルでオイラーのふるいを実装しようとしています。

素数についてHaskellWikiページをチェックしたところ、ストリームの不思議な最適化手法が見つかりました。3.8そのウィキの線形マージ:

primesLME = 2 : ([3,5..] `minus` joinL [[p*p, p*p+2*p..] | p <- primes']) 
  where
    primes' = 3 : ([5,7..] `minus` joinL [[p*p, p*p+2*p..] | p <- primes'])

joinL ((x:xs):t) = x : union xs (joinL t)

そしてそれは言う

「<strong>メリッサオニールのコードに従って、不要なメモ化を防ぎ、メモリリークを防ぐために、ここにダブルプライムフィードが導入されています。」</ p>

これはどうやってできるの?それがどのように機能するのか理解できません。

4

1 に答える 1

12
于 2012-12-15T19:18:23.083 に答える