Hauptsieb in Haskell

Ich bin sehr neu in Haskell und ich versuche nur, die Summe der ersten 2 Millionen Primzahlen zu finden. Ich versuche, die Primzahlen mit einem Sieb zu erzeugen (ich denke, das Sieb von Eratosthenes?), Aber es ist wirklich sehr langsam und ich weiß nicht warum. Hier ist mein Code.

sieve (x:xs) = x:(sieve $ filter (\a -> a `mod` x /= 0) xs)
ans = sum $ takeWhile (<2000000) (sieve [2..])

Danke im Voraus.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage