encountering another STM problem .. "teething problems" ; ^)

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

On Dec 30, 2007, at 1:09 , Galchin Vasili wrote:
main = do {atomic (r <- (createR 1); putR r 1)}
Strangely I am not getting a type error rather a syntax on the "<-" in main. ??
To use "<-" you need to open another "do" block:
main = do {atomic (do {r <- (createR 1); putR r 1})}
-- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH
participants (2)
-
Brandon S. Allbery KF8NH
-
Galchin Vasili