What is good-old-fashioned pipelining?
Pipelining is just sending input data into a single process and out to possibly another process. Rather arbitarily, I will consider all concrete programs (such as an instance of XSL) to be called processes, while I will consider all abstractions of them to be functions. Indeed, the binding of an abstract function to a process is much like the binding of a variable in lambda calculus. In terms of lambda calculus, a process can be considered abstracted by a function, which we will call f and call the application function f with the argument x just lambda x.f x. So, if one wanted to create a good-old fashioned linear “pipeline” through functions f1…fz, then the function just becomes lambda x.fz…f2f1x. One could imagine a pipeline taking multiple arguments for the first process f1, and producing named arguments elsewhere that are stored. This take on pipelining is modelled on the UNIX pipeline, of course. Problems The crucial problems with good-old fashioned pipelining are then apparen