我在學習Haskell。我試圖編寫一個包含「全局狀態」的程序:Vars
。每次調用函數時,我都想更改狀態的一個組成部分(例如var1
)。該變化可以是對組件的簡單功能(例如+4)。此外,它還打印出已更改的組件。這是我迄今爲止所做的(但我被卡住了)。編輯:運行代碼後,我想查看最新版本的全局狀態。Haskell:Monad變形金剛和全局狀態
import Control.Monad.State
import Control.Monad.IO.Class (liftIO)
data Vars = Vars {
var1 :: Int,
var2 :: Float
} deriving (Show)
sample :: StateT Vars IO a
sample = do
a <- change
liftIO $ print a
-- I want to call change again and apply more change to the state
change :: StateT Vars IO a
change = do
dd <- get
-- I don't know what to do next!
main = do
runStateT sample (Vars 20 3)
evalStateT sample (Vars 20 3)
您能否指定該程序的所需輸出?運行'main'函數後你想觀察什麼? – Shersh
@Shersh謝謝你的提示。我剛剛做完。 – 4xx