2015-08-20 33 views

回答

5

有两个原因:

  • 这是不可能的,因为Action是基于延续单子,你无法实现MonadMask的延续单子。请参阅this blog post以了解为什么这是不可能的粗略理由。
  • 这是不受欢迎的,因为您可以根据依赖性规则是成功还是失败做出选择,而在Shake中,您依赖的规则失败应该始终导致失败。

然而,摇确实提供actionFinallyactionOnException作为构建块,其是在MonadMask可用的功能受限制的变体。另外,Shake提供了withTempFilewithTempDir,它们与temporary包做了一些相同的事情。最后,如果你完全在IO,那么liftIObracket工作正常。

相关问题