
24 Dec
2007
24 Dec
'07
1:19 a.m.
module Main where import Control.Concurrent.STM import Control.Concurrent import System.Random type Account = TVar Int transfer :: Account -> Account -> Int -> IO () transfer from to amount = atomically (do {deposit to amount; withdraw from amount}) deposit :: Account -> Int -> STM () deposit acc amount = withdraw acc (- amount) withdraw :: Account -> Int -> STM () withdraw acc amount = do { bal <- readTVar acc; writeTVar acc (bal - amount) } When I try withdraw (TVar 10) .. I get "Not in scope: data constructor 'TVar'. OK .. "Tvar" is a class and not a Haskell data type ... so now what? Vasya