
Hi everyone, I have written the following program to find "magic numbers" i.e. integers 'n' such that both (n+1) and (n/2+1) are perfect squares. -- Program to find magic numbers Import IO main :: IO () main = do print (filter magicP sqs) sqs :: [Int] sqs = [x*x | x <- [1,3..mAX]] magicP :: Int -> Bool magicP x | ((x-1) `mod` /= 0 = False | otherwise = (((x-1) `div` 2) + 1) `elem` sqs) mAX :: Int mAX = 20000 -- End of listing If I try to run the program (compiled using GHC 6), it calculates all members of the list and then prints the whole list in the end. Since Haskell is 'lazy' I was expecting behaviour similar to HUGS where it prints the numbers as it finds them. Does this behaviour have something to do with the monadic IO in Haskell? I am a Haskell newbie and can't even claim having understood the "gentle introduction" properly. Now my question is - How do I reproduce such "lazy printing" behaviour in GHC? Wait... I thought of another one :-), how do I speed up this program? - AJ