What does unsafePerformIO do to the stack

Bernd Brassel bbr at informatik.uni-kiel.de
Thu Feb 7 08:29:47 EST 2008

Simon Marlow wrote:

> So the upshot is: you can use unsafeDupablePerformIO right now, or you
> can wait until I've tested and committed this patch to get
> tail-recursion with unsafePerformIO.

Wow, thank you for the detailed answer! That was really interesting.

> I've no idea how it works in Hugs, you'll have to ask them :)

At least I can tell you how it is done in that other interpreter I
mentioned. The reason that you can be better for that example is that
the argument of badStack is not shared. No need to push an update frame
for it. I am pretty sure that it is the same with the other compiler,
both for Curry not for Haskell btw., but like you I am not sure with Hugs.

If the ghc does not take into account what is statically not shared, I
guess there is potential for a good optimization here which would go
well beyond unsafe programs.

Greetings and thanks!

More information about the Glasgow-haskell-users mailing list