David Roundy wrote:
(Sure this is a weird situation, but I do like to think about worst
cases.)
In practice that is fine, with current RTSes and so on.
In principle it's not fine. A 'constant' should be constant over all
time, not just constant over a particular library version or sub-version
or a particular program invocation or OS or....
No, constants don't have to constant over all time. e.g. it's perfectly
fine for compilers to implement System.Info, whose sole purpose to provide
constants that are different in different library versions and OSs.
http://haskell.org/ghc/docs/latest/html/libraries/base/System-Info.html#v:os
I entirely disagree.
That API is broken. All those things should be in the IO monad.
I might have code which migrates at runtime between different OSes. Of
course i can't, and even if I did, it would probably return something
different like 'virtual haskell migration pseudo-OS', but that's not the
point.
Constants are mathematical and universal, like pi. That is what the
semantics of haskell say.
However, I don't claim this is terribly important. Or even a very
interesting debate ;)
Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe