On Tue, Oct 14, 2008 at 2:14 PM, Jules Bean <[EMAIL PROTECTED]> wrote: > David Roundy wrote: >> >> On Tue, Oct 14, 2008 at 05:20:35PM +0100, Jules Bean wrote: >>> >>> Running a program on a different interpreter or compiler had better >>> not change its denotation, otherwise it [the denotation] is not much >>> use as a basis for reasoning. >> >> But you're saying above that we can't change programs, right? You >> probably won't be surprised to hear that different compilers are >> different programs. And different packages are also different >> programs. Are you the only one who's allowed to fix bugs? > > No. I think we must be at cross purposes. > > I'm saying that we can change programs, and that changes their denotation, > and that's fine, and anyone can do that. But the denotation of a program is > supposed to be something independent of a particular compiler or OS or MAC > address or RAM size or any of the millions of other things which probably > don't change during the single run of a program. > > Putting these things into the IO monad is not an abuse of the IO monad. It > is simply an acknowledgement that they are runtime things, and not > denotational constructs. > > > Jules > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
But they aren't runtime constructs, they are compile-time constructs, just like how (+) has a different meaning when you are on Windows than it does when you are on Linux: they have different ways of allocating memory, adding two numbers, putting the result somewhere, etc. Really, they still denote the same thing ("add two numbers"), they just abstract over system-dependent details. Alex _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe