unsafePerformIO and IORefs
Nicolas Oury
Nicolas.Oury@ens-lyon.fr
Mon, 18 Nov 2002 19:34:13 +0100
I want to write something like
type State a = IORef a
newState :: a -> State a
newState v = unsafePerformIO (newIORef v)
But I don't want the compileer to inline this nor to inline any
application of this.
{#NOINLINE newState#}
But how can I stop this function to be inlined when applied for example :
....
let x = newState 0 in
{... code where x is used twice ...}
How to be sure that x isn't inlined and that all occurences of x are
pointing to the same memory place ?
Best regards,
Nicolas Oury