unsafePerformIO and IORefs

Lennart Augustsson lennart@augustsson.net
Mon, 18 Nov 2002 23:40:48 +0100


Yes, there are several reasons for having UNSAFE in the name. :-)

    -- Lennart

Ashley Yakeley wrote:

>At 2002-11-18 11:05, Sven Panne wrote:
>
>  
>
>>global :: a -> IORef a
>>global a = unsafePerformIO (newIORef a)
>>    
>>
>
>This is useful, you can do this with it:
>
>  ref = global Nothing
>
>  convert :: a -> IO b
>  convert a = do
>    writeIORef ref (Just a)
>    Just b <- readIORef ref
>    return b
>
>
>  
>