看GHCi中TVar的价值

zho*_*hon 3 haskell ghci stm tvar

通过Simon Peyton Jones并发示例,我有以下代码:

import Control.Concurrent.STM
import Control.Concurrent.STM.TVar

deposit account amount = do
    bal <- readTVar account
    writeTVar account (bal+amount)
Run Code Online (Sandbox Code Playgroud)

我试图在GHCi REPL中测试这个

*Main> checking <- atomically $ newTVar 100
*Main> atomically $ deposit checking 10
Run Code Online (Sandbox Code Playgroud)

如何验证我的支票余额是110美元?

我试过了

*Main> checking
*Main> readTVar checking
*Main> balance <- readTVar checking
Run Code Online (Sandbox Code Playgroud)

Ven*_*nge 6

atomically $ readTVar checking做你想要的.GHCi REPL自动执行您提供的任何IO操作.

  • 对于这个简单的例子,还有`readTVarIO`,相当于`atomically.readTVar`但效率更高. (2认同)