gpt4 book ai didi

haskell - 我怎样才能避免这些案例陈述?

转载 作者:行者123 更新时间:2023-12-02 21:11:17 25 4
gpt4 key购买 nike

如何在没有嵌套 case 语句的情况下表达以下内容?具体来说,我想按顺序执行这些步骤,如果任何步骤遇到“坏”分支,则调用失败。

loadData :: IO [Market]
loadData = do
filedata <- B.readFile "markets.json"
case parseData filedata of
Left err -> fail err
Right v -> do
case fromJSON v of
Error err -> fail err
Success a -> return a

最佳答案

如果 parseDatafromJSON 都将 Either Err a 作为其共域,其中 Err 是固定类型(也许由您定义),那么您可以使用 Either e monad 实例,如下所示:

loadData :: IO (Either Err [Market])
loadData = do
filedata <- B.readFile "markets.json"
return $ parseData filedata >>= fromJSON

或者,如果您想要更加圆滑,您可以使用特定的 monad transformer做同样的事情。

关于haskell - 我怎样才能避免这些案例陈述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com