
Hi Folks, I am creating an Int range by starting with the full range of Int: let r1 = [minBound::Int .. maxBound::Int] Then I restrict the upper bound of the range, e.g., let r2 = r1 `intersect` [minBound::Int .. 10] Then I restrict the lower bound of the range, e.g., let r3 = r2 `intersect` [0 .. maxBound::Int] No error thus far. However, when I try to display r3 I get an "Out of Memory" error. Why is that? I created a function that restricts a range using the above approach: restrict :: [Int] -> Restriction-> [Int] restrict r (MinInclusive v) = r `intersect` [v .. maxBound::Int] restrict r (MaxInclusive v) = r `intersect` [minBound::Int .. v] The arguments to "restrict" is a range, r, and an indication of whether the upper bound is to be restricted (MaxInclusive v) or the lower bound is to be restricted (MinInclusive v). Is there a better way to do this? What can I do to my restrict function to avoid getting an "Out of Memory" error? /Roger