[Haskell-cafe] Linking and unsafePerformIO

Jules Bean jules at jellybean.co.uk
Tue Oct 14 17:14:40 EDT 2008

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.


More information about the Haskell-Cafe mailing list