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, который может предоставить значение выхода, но я думаю, что должен быть более идиоматический способ сделать это.

Ответы на вопрос(2)

Ваш ответ на вопрос