A Pipe можно разбить на две части: генераторную часть (yield) и потребительскую часть (await).
Если у вас есть Pipe, который использует генератор только наполовину и возвращает () (или никогда не возвращается), тогда он может быть представлен как "ListT done right". Оказывается, что MonadPlus можно использовать, чтобы представлять что-либо вроде ListT-done-right.
http://www.reddit.com/r/haskell/comments/2bpsh7/a_simple_monadic_stream_library/cj7sqtw?context=3
Итак, мой вопрос заключается в следующем: существует ли двойное соединение с ListT и MonadPlus для потребительской части Pipes?
Требования:
- Труба, которая никогда не использует
yieldи возвращает только()(или никогда не возвращается), но использоватьawaitможно как это "двойное к ListT". - "dual to ListT" можно обобщить на "dual of MonadPlus"