1
我試圖編寫一個程序,它接受任何通用語句, 對其進行評估,並在評估每個步驟時顯示它。Haskell中的語句評估器跟蹤
例如, 如果我們有賦值語句序列,它應該運行:
評估賦值語句1
顯示評價結果1
評估賦值語句2
顯示評估結果2
現在,它只顯示最終結果。 代碼是
> evalS_maybe :: Statement -> Store -> Maybe Store
> evalS_maybe [email protected](While e s1) s = evalS_maybe (If e
> (Sequence s1 (While e s1))
> Skip)
> s
> evalS_maybe Skip s = Just s
> evalS_maybe (Sequence s1 s2) s = do
> sq <-evalS_maybe s1 s
> evalS_maybe s2 sq
> evalS_maybe (Assign x e) s = do
> ag <-evalE_maybe e s
> return (Map.insert x ag s)
> evalS_maybe (If e s1 s2) s = do
> b2 <- evalE_maybe e s
> case b2 of
> BoolVal True -> evalS_maybe s1 s
> BoolVal False -> evalS_maybe s2 s
> _ -> return s
編輯:
使用的數據類型的其餘部分是:
> type Variable = String
> data Statement =
> Assign Variable Expression
> | If Expression Statement Statement
> | While Expression Statement
> | Sequence Statement Statement
> | Skip
> deriving (Show)
> data Expression =
> Var Variable
> | Val Value
> | Op Bop Expression Expression
> deriving (Show)
> data Bop =
> Plus
> | Minus
> | Times
> | Divide
> | Gt
> | Ge
> | Lt
> | Le
> deriving (Show)
> data Value =
> IntVal Int
> | BoolVal Bool
> deriving (Show)
> type Store = Map Variable Value
任何人可以請幫助? 在此先感謝!
在給予您任何幫助之前,您需要向我們展示'Statement'和'Store'的數據定義。 –
@ChrisTaylor,我試着通過編輯問題來添加相同的內容。你能幫忙嗎?謝謝。 –
你面臨的具體問題是什麼?你爲什麼不能這樣做?現在,這個問題聽起來像「我的程序沒有做什麼,你能幫我完成嗎?」這對StackOverflow來說不是一個好問題。你可以說得更詳細點嗎?你有什麼嘗試? –