Erklären Sie diesen Teil des Hashkell-Codes, der einen Stream von Primzahlen ausgibt

Ich habe Probleme beim Verstehen dieses Codeblocks:

let
  sieve (p:xs) = p : sieve (filter (\ x -> x `mod` p /= 0) xs)
in sieve [2 .. ]

Kann es jemand für mich aufschlüsseln? Ich verstehe, dass es eine Rekursion gibt, aber das ist das Problem, das ich nicht verstehen kann, wie die Rekursion in diesem Beispiel funktioniert.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage