I couldn't find a way to define own (or at least wrap existing) pipe primitives so that I could handle more complex streams (i.e. strems of non-trivial data types), streams of streams, double/triple/quadruple/... streams (select/poll/epoll), etc.
Currently it seems these are pipe "producers": range receive
And these pipe "consumers": foreach
And these both "producers" and "consumers": transform case
Could you enlighten me?