Skip to content

Deprecate the realWorld#

There's some messy code about that's intended to prevent problems with the real world. What if we deprecate realWorld#? People will still be able to shoot themselves in the foot by defining realWorld# in terms of runRW#, but a warning in the documentation should hopefully be sufficient to prevent that.

Another, considerably more invasive, option might be to use something like

runST# :: (forall s . State# s -> o) -> o

data RealWorld :: * -> *
runIO# :: (forall i . State# (RealWorld i) -> o) -> o

This would (I believe) provide a much stronger guarantee that the real world can't escape. But it would probably break considerably more code, so I doubt it would be worth the trouble.

Edited by David Feuer
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information