turn off let floating

Simon Marlow simonmar at microsoft.com
Fri Apr 30 10:37:57 EDT 2004

On 29 April 2004 10:17, David Sabel wrote:

>> You could try out that theory by copying the definition of
>> unsafePerformIO into your code, and putting an INLINE pragma on it. 
>> I think it's safe to do this in your case (it's not safe in general).
> That's interesting for me, in which situations isn't it safe to inline
> the definition of unsafePerformIO?

We try to maintain the invariant that the IO action that is the argument
to unsafePerformIO is atomic, in the sense that it is either completely
performed or not performed when the application of unsafePerformIO is
evaluated (ignoring exceptions).  If we let the compiler inline
unsafePerformIO, then the compiler would sometimes be able to share part
of the IO computation amongst multiple instances, because it can see
that the first action is applied to the realWorld# constant.


More information about the Glasgow-haskell-users mailing list