A type class capturing mutable storage cells that support CAS operations in the IO monad.
- class CASable casref a where
- newCASable :: a -> IO (casref a)
- readCASable :: casref a -> IO a
- writeCASable :: casref a -> a -> IO ()
- cas :: casref a -> a -> a -> IO (Bool, a)
- unsafeName :: a -> Int
- ptrEq :: a -> a -> Bool
Documentation
class CASable casref a whereSource
It would be nice to use an associated type family with this class (for casref), but that would preclude overlapping instances.
newCASable :: a -> IO (casref a)Source
readCASable :: casref a -> IO aSource
writeCASable :: casref a -> a -> IO ()Source
unsafeName :: a -> IntSource