私は現在、新しいAPIを構築していますし、それが現在提供機能の一つである:ブラケット機能のようにMonadUnliftIOまたはMonadMaskを使用しますか?
inSpan :: Tracer -> Text -> IO a -> IO a
私は私より
inSpan :: MonadTracer m => Text -> m a -> m a
などの署名を与え、モナドにその
Tracer
を移動するために探しています
inSpan
の実装では、私は2つの主要なオプションを持っていることを意味している、bracket
を使用しています。
class MonadUnliftIO m => MonadTracer m
または
どのような方法をお勧めしますか?私が言及したすべてのタイプを制御しているので、IO
を下部に適用していないので、MonadMask
に少し傾いていることに注意してください(つまり、おそらく純粋なMonadTracer
インスタンスがある可能性があります)。
私は考慮すべきことがありますか?