2

Shakeでtemporaryパッケージを使用したいのですが、欠落している のインスタンスが必要です。Shake がそのようなインスタンスを提供しないのはなぜですか?ActionMonadMask

4

1 に答える 1

5

2 つの理由があります。

  • Actionは継続モナドに基づいているため、不可能であり、継続モナドMonadMaskに対して実装することはできません。それが不可能な理由の大まかな理由については、このブログ投稿を参照してください。
  • 依存するルールが成功するか失敗するかによって選択を行うことができるため、望ましくありません。一方、Shake では、依存するルールの失敗は常に失敗につながるはずです。

ただし、Shake はとで使用できる機能の制限されたバリアントであるビルディング ブロックとして提供しactionFinallyます。さらに、Shake は と を提供し、これらはパッケージと同じことをいくつか行います。最後に、完全に に参加している場合は、正常に動作します。actionOnExceptionMonadMaskwithTempFilewithTempDirtemporaryIOliftIObracket

于 2015-08-20T17:58:38.657 に答える