@@ -495,6 +495,15 @@ module IORef where
496 \}" :: forall s r. IORef s -> Eff (ref :: Ref | r) s
496 \}" :: forall s r. IORef s -> Eff (ref :: Ref | r) s
499+ foreign import modifyIORef "function modifyIORef(ref) {\
500+ \ return function(f) {\
501+ \ return function() {\
502+ \ ref.value = f(ref.value);\
505+ \}" :: forall s r. IORef s -> (s -> s) -> Eff (ref :: Ref | r) {}
498 foreign import writeIORef "function writeIORef(ref) {\
507 foreign import writeIORef "function writeIORef(ref) {\
499 \ return function(val) {\
508 \ return function(val) {\
500 \ return function() {\
509 \ return function() {\
@@ -540,14 +549,22 @@ module ST where
541 \}" :: forall a h r. STRef h a -> Eff (st :: ST h | r) a
550 \}" :: forall a h r. STRef h a -> Eff (st :: ST h | r) a
543− foreign import modifySTRef "function modifySTRef(f) {\
552+ foreign import modifySTRef "function modifySTRef(ref) {\
544− \ return function(ref) {\
553+ \ return function(f) {\
545 \ return function() {\
554 \ return function() {\
546 \ ref.value = f(ref.value);\
555 \ ref.value = f(ref.value);\
549− \}" :: forall a h r. (a -> a) -> STRef h a -> Eff (st :: ST h | r) {}
558+ \}" :: forall a h r. STRef h a -> (a -> a) -> Eff (st :: ST h | r) {}
560+ foreign import writeSTRef "function writeSTRef(ref) {\
561+ \ return function(a) {\
562+ \ return function() {\
566+ \}" :: forall a h r. STRef h a -> a -> Eff (st :: ST h | r) {}
551 foreign import runST "function runST(f) {\
568 foreign import runST "function runST(f) {\
552 \ return f;\
569 \ return f;\
553 \}" :: forall a r. (forall h. Eff (st :: ST h | r) a) -> Eff r a
570 \}" :: forall a r. (forall h. Eff (st :: ST h | r) a) -> Eff r a