gpt4 book ai didi

haskell - 我如何创建一个 IO Bool 暂时返回 True,然后返回 False?

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

今天我试图加深对 IO monad 的理解,我尝试编写一个接受 Int n 并返回 IO Bool 的函数 会产生 True n 次,然后永远产生 False

trueThenFalse :: Int -> IO Bool

通常我会用递归来解决类似的问题,但这里似乎没有什么可以递归的。

我该如何实现这个功能?这样做可能和/或可取吗?

最佳答案

作为 IO (IO Bool) 可能更有意义,因为您必须首先设置一些状态:

trueThenFalse n = do
holder <- newMVar n
return (modifyMVar holder (\ k -> return (k - 1, k > 0)))

这会创建一个可变持有者来存储“剩下”的 True 数量,并返回另一个可以多次运行的 IO 操作,修改计数并返回 True 如果计数 > 0。

关于haskell - 我如何创建一个 IO Bool 暂时返回 True,然后返回 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464973/

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