gpt4 book ai didi

haskell - Haskell中do block 内的错误检查

转载 作者:行者123 更新时间:2023-12-03 09:57:07 25 4
gpt4 key购买 nike

我有以下一组操作:

action1 :: IO Bool
action2 :: IO Bool
action3 :: IO Bool

有些 Action 只是另一个 Action 的组合
complexAction = do
action1
action2
action3

我需要的是检查每个 Action 的结果并在错误的情况下返回 False 的构造。我可以手动完成,但我确信 haskell 确实有工具可以摆脱那种样板。

最佳答案

最简单的方法是

complexAction = fmap and (sequence [action1, action2, action3])

但是您也可以编写自己的组合器以在第一个 Action 后停止:
(>>/) :: Monad m => m Bool -> m Bool -> m Bool
a >>/ b = do
yes <- a
if yes then b else return False

您想声明固定性以使其具有关联性
infixl 1 >>/  

然后你可以做
complexAction = action1 >>/ action2 >>/ action3

关于haskell - Haskell中do block 内的错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172710/

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