{- File: lazy.hs The return value of f x is infinite, but lazy evaluation means we can look at any initial part of the infinite list -} f x = [ g z | z <- [x..], p z ] where g n = 3*n + x p m = m `mod` x == 0