2
我想使用temporary
package与Shake,但这需要Action
有一个MonadMask
缺少的实例。为什么Shake不提供这样的实例?为什么Shake没有为Action提供MonadMask实例?
我想使用temporary
package与Shake,但这需要Action
有一个MonadMask
缺少的实例。为什么Shake不提供这样的实例?为什么Shake没有为Action提供MonadMask实例?
有两个原因:
Action
是基于延续单子,你无法实现MonadMask
的延续单子。请参阅this blog post以了解为什么这是不可能的粗略理由。然而,摇确实提供actionFinally
和actionOnException
作为构建块,其是在MonadMask
可用的功能受限制的变体。另外,Shake提供了withTempFile
和withTempDir
,它们与temporary
包做了一些相同的事情。最后,如果你完全在IO
,那么liftIO
和bracket
工作正常。
https://github.com/ndmitchell/shake/issues/186 – Cactus