Because your data should flow like water through a channel.
Except for the part where water can only take one path -- your data may take many paths, or none.
First, build your duct. The following pieces are available: Simple End Pieces answer: perform a combining operation that summarizes messages into one value of the same type as the messages.
Question for O Ye Rubyist: I want to declare the method "draw" at a high level. All Pieces and Results should have this method. I want to document it in one place, this saving me duplicate documentation and (more importantly) declaring that the method means the same thing and is expected to follow the same contract in all those places. Como puedo?