这个函数有一个类型问题。
type Store = [(String, Float)]
evalParser :: String -> Store -> Float -- Boring function who returns a Float
programme :: Store -> IO()
programme store = do
putStr "@EvmInteractif:$> "
instruction <- getLine
putStrLn (show instruction)
if (estCommande (instruction) == True) then
do
res <- evalParser instruction store
putStrLn "TODO: execution de la commande"
programme store在res的做作这一行,我有这样的错误:
有人能告诉我正确的语法吗?谢谢
发布于 2017-11-09 04:47:20
evalParser是纯的,你不需要使用do符号来调用它。要修复它,您可以将其包装在return中,并将其粘贴到IO Monad中:
res <- return $ evalParser instruction store要完全避免包装/解包,只需从一开始就不要将其视为不纯值:
let res = evalParser instruction storehttps://stackoverflow.com/questions/47189327
复制相似问题