<div dir="ltr">Hi,<div><br></div><div>I seem to be landing into infinite recursion when using higher order functions with list comprehension. Take this for an example. The following works well, and gives answers for numbers like 2000000 as well:</div><div><br></div><div><div>primesBelowN :: Integer -> [Integer]</div><div>primesBelowN n = 2:3:filter f [6*k+i | k <- [1..(n-1)`div`6], i <- [-1, 1]]</div><div>                     where f x = foldr g True xs</div><div>                                 where g t ac = (x `rem` t /= 0) && ac</div><div>                                       xs = [5, 7..(truncate (sqrt (fromInteger x)))]</div></div><div><br></div><div><br></div><div>However, the following never returns anything for the same number, probably due to some kind of loop malfunction:</div><div><br></div><div><div>primesBelowN :: Integer -> [Integer]</div><div>primesBelowN n = 2:3:filter f [6*k+i | k <- [1..(n-1)`div`6], i <- [-1, 1]]</div><div>                     where f x = foldr g True xs</div><div>                                 where g t ac = (x `rem` t /= 0) && ac</div><div>                                       xs = [ m | m <- [5, 7, ..], m <= <span style="line-height:1.5">(truncate (sqrt (fromInteger x)))</span><span style="line-height:1.5">]</span></div></div><div><br></div><div>Any ideas what might be going wrong?</div><div><br></div><div>Thanks in advance!</div><div><br></div><div>DJ</div></div>