Объясните этот кусок кода haskell, который выводит поток простых чисел

У меня проблемы с пониманием этого куска кода:

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

Может кто-нибудь сломать это для меня? Я понимаю, что в этом есть рекурсия, но это проблема, которую я не могу понять, как работает рекурсия в этом примере.

Ответы на вопрос(5)

Ваш ответ на вопрос