Prevent optimization from tempering with unsafePerformIO

Stefan O'Rear stefanor at
Tue Oct 16 16:32:31 EDT 2007

On Tue, Oct 16, 2007 at 04:06:26PM +0200, Bernd Brassel wrote:
> Hi Neil, hi Don!
> Nice meeting you at ICFP by the way.
> > Can you give a specific example of what you have tried to do, and how it
> > failed?
> I have attached a short synopsis of what our Curry to Haskell
> conceptually does. I could explain what all the parts mean and why they
> are defined this way, if it is important. On first glance it looks
> as if we were doing unsafe things in the very worst way. But the
> invariants within the generated code clean up things again. E.g., the
> result of main does not at all depend on whether or not the program is
> evaluated eagerly or lazily.
> I hope it is okay that I did not add any no-inline pragmata or something
> like that. Unfortunately, I forgot all the things we have tried more
> than a year ago to make optimization work.

Might I suggest, that the problem is your use of unsafePerformIO?  If
you use unsafePerformIO in accordance with the rules listed in the
specification (which happens to be the FFI addendum), -O options will
have no effect.  (Not that what you are trying to do is achievable with
correct use of unsafePerformIO; why do you want to do this unsafely,
instead of just using 'length'?  unsafePerformIO is a very slow
function, remember)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url :

More information about the Glasgow-haskell-users mailing list