Explique esse pedaço de código haskell que gera um fluxo de primos
Eu tenho dificuldade em entender esse pedaço de código:
let
sieve (p:xs) = p : sieve (filter (\ x -> x `mod` p /= 0) xs)
in sieve [2 .. ]
Alguém pode quebrar isso por mim? Eu entendo que há recursão nele, mas esse é o problema, não consigo entender como funciona a recursão neste exemplo.