we will now review concrete example-- file matcher that reads all the filenames given on the command line (including those in the directories given on the command linerecursively)and that outputs the absolute paths of those files that meet certain criteria we will start by looking at how pipelines are composedand then we will look at the coroutines that provide the pipeline components here is the simplest pipelinepipeline get_files(receiveros walk( this pipeline prints every file it is given (or all the files in the directory it is givenrecursivelythe get_files(function is coroutine that yields the filenames and the receiver is reporter(coroutine--created by receiver reporter()--that simply prints each filename it receives this pipeline does little more than the os walk(function (and in fact uses that function)but we can use its components to compose more sophisticated pipelines pipeline get_files(suffix_matcher(receiver(htm"html"))this pipeline is created by composing the get_files(coroutine together with the suffix_matcher(coroutine it prints only html files coroutines composed like this can quickly become difficult to readbut there is nothing to stop us from composing pipeline in stages--although for this approach we must create the components in last-to-first order pipeline size_matcher(receiverminimum= * pipeline suffix_matcher(pipeline(png"jpg"jpeg")pipeline get_files(pipelinethis pipeline only matches files that are at least one megabyte in sizeand that have suffix indicating that they are images how are these pipelines usedwe simply feed them filenames or paths and they take care of the rest themselves for arg in sys argv[ :]pipeline send(argnotice that it doesn' matter which pipeline we are using--it could be the one that prints all the filesor the one that prints html filesor the images one--they all work in the same way and in this caseall three of the pipelines are filters--any filename they get is either passed on as is to the next component (and in the case of the reporter()printed)or dropped because they don' meet the criteria before looking at the get_files(and the matcher coroutineswe will look at the trivial reporter(coroutine (passed as receiverthat outputs the results