Hello,
Here is a code snippet:
type Resource = TVar Int
putR :: Resource -> Int -> STM ()
putR r i = do { v <- readTVar r;
writeTVar r (v + i) }
getR :: Resource -> Int -> STM ()
getR r i = do { v <- readTVar r;
if (v < i) then retry
else writeTVar r (v-i)}
createR :: Int -> STM (Resource)
createR i = newTVar i
main = do {atomic (r <- (createR 1); putR r 1)}
Strangely I am not getting a type error rather a syntax on the "<-" in main. ??
Kind regards, Vasya