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"