Prime Sieve en Haskell

Soy muy nuevo en Haskell y solo estoy tratando de encontrar la suma de los primeros 2 millones de números primos. Estoy tratando de generar los números primos usando un tamiz (¿creo que el tamiz de Eratóstenes?), Pero es realmente muy lento y no sé por qué. Aquí está mi código.

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

Gracias por adelantado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta