Proxy
Haskell Pipesに 2 つあるとしましょう。これらは、外部システム プロセスを表します。
produce :: MonadIO m => Producer ByteString m ExitCode
consume :: MonadIO m => Consumer ByteString m ExitCode
したがってEffect
、次のように、それらを にフックします。
effect :: Effect m ExitCode
effect = produce >-> consume
これにより、終了する最初からがEffect
得られます。通常、これはではなく になります。最初に終了しない場合でも、パイプの戻り値を取得する慣用的な方法は何ですか?ExitCode
Proxy
produce
consume
consume
consume
これまでのところ、ストリームが完了したことを認識できるように、ある種の厄介なインバンド シグナリングを行わなければ、これは不可能だと考えています。最後の Proxy がシャットダウンすることを知る唯一の方法は、 から何かを取得することです。そのため、ストリームが終了したことを知らせるawait
ために空を送ることができます。ByteString
しかし、それは正しくありません。私が今持っているのは、終了値を提供できる別のMVarですが、これを行うにはもっと慣用的な方法が必要だと思います。