data Ref :: !
data RefVal :: * -> *
modifyRef :: forall s r. RefVal s -> (s -> s) -> Eff (ref :: Ref | r) Unit
newRef :: forall s r. s -> Eff (ref :: Ref | r) (RefVal s)
readRef :: forall s r. RefVal s -> Eff (ref :: Ref | r) s
writeRef :: forall s r. RefVal s -> s -> Eff (ref :: Ref | r) Unit
unsafeRunRef :: forall eff a. Eff (ref :: Ref | eff) a -> Eff eff a