What is the difference between the following programs? main :: IO () main = print System.argv main :: IO () main = print ["Hello, World!"] If System.argv :: [String], then I expect that any run of both programs behaves the same, because printing a constant value is always the same. What does it means that a constant is different between two runs? So there are two different notion of being constant? (the pseudoconstants of Phil are perhaps a realization of this). Making argv a constant looks like an attempt to put a square block on a round hole... I don't think on the benefits from the (imperative) programmer point of view, but in the spirit of FP. Perhaps when fighting with the implementation of some real (imperative) system in Haskell, my point of view changes, but the *real* world changes our ideals... I prefer much more the solution of Chris Dornan, which is in the spirit of actual Haskell, but I have to think on it a bit more. Pablo E. Martinez Lopez (Fidel).
