advanced programming techniques items " "" "" "" "and "fare processed and produce outputwhile item "dis dropped the pipeline shown in figure is filtersince each data item is passed through unchanged and is either dropped or output in its original form the end points of pipelines tend to perform the same rolesacquiring data items and outputting results but between these we can have as many components as necessaryeach filtering or transforming or both and in some casescomposing the components in different orders can produce pipelines that do different things we will start out by looking at theoretical example to get better idea of how coroutine-based pipelines workand then we will look at real example suppose we have sequence of floating-point numbers and we want to process them in multicomponent pipeline such that we transform each number into an integer (by rounding)but drop any numbers that are out of range ( if we had the four coroutine componentsacquire((get number)to_int((transform number by rounding and converting to an integer)check((pass on number that is in rangedrop number that is out of range)and output((output number)we could create the pipeline like thispipe acquire(to_int(check(output()))we would then send numbers into the pipeline by calling pipe send(we'll look at the progress of the numbers and as they go through the pipelineusing different visualization from the step-by-step figures used earlierpipe send( acquire( to_int( check( output( pipe send( acquire( to_int( check( notice that for there is no output this is because the check(coroutine received which is out of range (> )and so it was filtered out let' see what would happen if we created different pipelinebut using the same componentspipe acquire(check(to_int(output()))this simply performs the filtering (check()before the transforming (to_int()here is how it would work for and pipe send( acquire( check( to_int( output( pipe send( acquire( check( to_int( output( here we have incorrectly output even though it is out of range this is because we applied the check(component firstand since this received an in-range value of it simply passed it on but the to_int(component rounds the numbers it gets