Hi,

This could gives you for any given integer the list of prime numbers. source is from a stack overflow snippet.

helper function:
isqrt :: Integral a => a -> a
isqrt = floor . sqrt . fromIntegral

main function:
primes 1 = []
primes n = 2:[i | i <- [3,5..n], and [mod i k /= 0 | k <- primes (isqrt i)]]



my main unclarity is how I should interpret i and k in de mod part. At every step of the recursion.

example: primes 10.

it should generate [2,3,5,7,9] if you ignore the second part.

however, when I look at the second part

then first I need to do this primes (isqrt 10), which give primes 3. which gives met [2,3]
first question) I haven't reached base case in this situations so can i or can i not meaningfully evaluate mod i k /= 0?
Independent of that I now go deeper to reach base case.
So I go to primes (isqrt 3) which gives me primes 1 which is []. Now I hit the base case and need to definitely evaluate mod i k /= 0.
second question) but in this case what is i and what is k?

If I have it completely wrong, then please be patience. I appreciate the input!

best,