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).



Reply via email to