[Haskell-cafe] what are the safety conditions for unsafeIOToST
Henning Thielemann
schlepptop at henning-thielemann.de
Wed Apr 7 11:38:39 EDT 2010
Gregory Crosswhite schrieb:
> I would venture that the condition under which unsafeIOtoST would be safe is if all of the computations you are performing in the IO monad are only changing state that is local to the computation within the ST monad in which you are running. (For example, if there were no STRef type then you could emulate it using IORefs, and this would be safe since the IORefs couldn't leak outside of the ST monad.)
This is the way I implemented ST and STRef for JHC:
http://code.haskell.org/~thielema/statethread/
> On Apr 6, 2010, at 5:30 PM, Roman Leshchinskiy wrote:
>
>
>
>> In fact, the only safe-ish use for it I have found is to use Storable-related functions in ST, hoping that the instances don't actually use any real IO functionality. Arguably, this shouldn't be necessary as Storable should live in ST anyway.
>>
>>
But Storable in ST monad would be still dangerous, because pointers may
point to non-allocated memory or point outside of an array.
More information about the Haskell-Cafe
mailing list