Dear Haskellers, Can you tell me how to force Haskell to output the results in a `lazy' way? Consider, for example, the program main = putStr (concat ["\n min1 = ", show min1, "\n min2 = ", show min2, "\n" ] ) where min1 = minimum [1 .. 10 ] :: Integer min2 = minimum [1 .. (10^10)] :: Integer I do not know whether the effect is due to implementation. And I `make'-run the program under GHC-6.2.2-pre by commanding ghc -O --make Main ./a.out This prints min1 = 1 and hangs silently -- probably, because min2 takes long to compute. But why does not it print immediately min1 = 1 min2 = ? This is for the first time in my practice that a `lazy' printing is essential. The above example is contrived. The real example is a program that searches for the proof and accumulates a certain ptrace :: ProofTrace, type ProofTrace = [Step] The first steps are performed easily, and also they are informative. So, the user should see their results immediately -- when one applies (show ptrace). The whole proof may take long, the last steps in ptrace may be ready after a very long time. And Haskell just holds until the whole ptrace is ready, which is annoying. Copy, please, the answer to mechvel@botik.ru With kind regards, ----------------- Serge Mechveliani mechvel@botik.ru