Haskell Pipes - получить возвращаемое значение последнего прокси в конвейере
Допустим, у меня есть дваProxy
в Haskell Pipes. Они представляют внешние системные процессы.
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
, Каков идиоматический способ Pipes, чтобы получить возвращаемое значениеconsume
даже если он не заканчивается первым?
Пока что я думаю, что это невозможно без каких-либо отвратительных внутриполосных сигналов, поэтомуconsume
знает, что поток сделан. Единственный способ, которым знает последний Прокси-сервер, - это получить что-то отawait
чтобы я мог отправить его пустымByteString
сигнализировать, что поток завершен. Это просто не кажется правильным, хотя. Теперь у меня есть отдельный MVar, который может предоставить значение выхода, но я думаю, что должен быть более идиоматический способ сделать это.