upstream downstream
source <------------- operator (parameters) -------------> consumer/further operators
Some operators have multiple upstreams such as zipWith
which is an instance convenience for zip(upstream1, upstream2, func2)
.