Flow-based programming
Let's move on to discuss another topic that isn't necessarily new, but is recently making a stir in the programming world.
Flow-based programming or programming with pipes is a way of specifying and solving particular problems in terms of a flow and a connection of interconnected units. At its basis, flow-based programming defines a sequence of operations that will be performed. Each element in the sequence (of computation) defines a specific computation, and computes and passes to the next in the sequence. Ignoring types for a moment, each unit is independent of each other. Each can be modified without dramatically affecting other components in the flow.
Flow-based programming inherently requires the immutability constructs of functional programming because each element that will be computed over the flow, must be computable without interaction of other elements of the original set. That is, we take some collection of elements, and for each element, pass the element...