Peneira Prime em Haskell

Sou muito novo no Haskell e estou apenas tentando encontrar a soma dos primeiros 2 milhões de primos. Estou tentando gerar os primos usando uma peneira (acho que a peneira de Eratóstenes?), Mas é realmente muito lenta e não sei por quê. Aqui está o meu código.

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

Desde já, obrigado.

questionAnswers(5)

yourAnswerToTheQuestion