@@ -1,5 +1,6 @@
1module Data.IORef
1module Data.IORef
3+||| A mutable variable in the IO monad.
4data IORef a = MkIORef a
5data IORef a = MkIORef a
@@ -37,18 +38,22 @@ implementation HasReference FFI_JS where
37 writeIORef' (MkIORef ref) val =
38 writeIORef' (MkIORef ref) val =
38 foreign FFI_JS "%0.val = %1" (Ptr -> Ptr -> JS_IO ()) (believe_me ref) (believe_me val)
39 foreign FFI_JS "%0.val = %1" (Ptr -> Ptr -> JS_IO ()) (believe_me ref) (believe_me val)
41newIORef : a -> IO (IORef a)
43newIORef : a -> IO (IORef a)
42newIORef = newIORef'
44newIORef = newIORef'
46+||| read the value of an IORef
45readIORef : IORef a -> IO a
48readIORef : IORef a -> IO a
46readIORef = readIORef'
49readIORef = readIORef'
51+||| write the value of an IORef
49writeIORef : IORef a -> a -> IO ()
53writeIORef : IORef a -> a -> IO ()
50writeIORef = writeIORef'
54writeIORef = writeIORef'
56+||| mutate the contents of an IORef
53modifyIORef : IORef a -> (a -> a) -> IO ()
58modifyIORef : IORef a -> (a -> a) -> IO ()
54modifyIORef = modifyIORef'
59modifyIORef = modifyIORef'