gpt4 book ai didi

haskell - 为什么Shake不为Action提供MonadMask实例?

转载 作者:行者123 更新时间:2023-12-02 09:31:58 24 4
gpt4 key购买 nike

我想使用 temporary packageShake ,但这需要 Action 有一个 MonadMask 实例,而该实例缺失。为什么Shake不提供这样的实例?

最佳答案

有两个原因:

  • 这是不可能的,因为 Action 基于延续 monad,并且您无法为延续 monad 实现 MonadMask。请参阅this blog post粗略地解释为什么这是不可能的。
  • 这是不可取的,因为这样您就可以根据依赖的规则是成功还是失败来做出选择,而在 Shake 中,您依赖的规则的失败总是会导致您失败。

但是,Shake 确实提供了 actionFinallyactionOnException 作为构建 block ,它们是 MonadMask 中可用函数的受限变体。此外,Shake 还提供了 withTempFilewithTempDir,它们执行一些与 temporary 包相同的操作。最后,如果您完全处于 IO 中,那么 liftIObracket 就可以正常工作。

关于haskell - 为什么Shake不为Action提供MonadMask实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125187/

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