我们知道主要功能有类型IO ().但是,这对我来说是个问题,因为我的程序可能会返回错误.这意味着我正在从main函数执行类似的东西:
ErrorT String IO ()
Run Code Online (Sandbox Code Playgroud)
当然,此刻我遇到了类型错误的问题.
我该怎么办 ?
args <- getArgs
s <- readFile $ head args
myFoo s
Run Code Online (Sandbox Code Playgroud)
哪里 myFoo :: String -> ErrorT String IO ()
您需要运行它runErrorT:
runErrorT :: ErrorT e m a -> m (Either e a)
Run Code Online (Sandbox Code Playgroud)
因为myFoo返回a ErrorT String IO ()将评估IO (Either String ())你执行的main并匹配结果:
args <- getArgs
s <- readFile $ head args
result <- runErrorT (myFoo s)
case result of
Right _ -> putStrLn "ok!"
Left(err) -> putStrLn $ "Error: " ++ err
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |