public function foldFiles($start_value, \Closure $fold_with) {
        foreach ($this->allFiles() as $file) {
            $start_value = $fold_with($start_value, $file);
        }
        return $start_value;
    }
public function foldFiles($start_value, \Closure $fold_with) {
        foreach ($this->allFiles() as $file) {
            $start_value = $fold_with($start_value, $file);
        }
        return $start_value;
    }
public function foldFiles ( $ start_value , \ Closure $ fold_with ) { foreach ( $ this -> allFiles ( ) as $ file ) { $ start_value = $ fold_with ( $ start_value , $ file ) ; } return $ start_value ; }
Fold over all files in this directory and subjacent directories.

Start with an initial value of some type and a function from that type
and File to a new value of the type. Will successively feed all files
and the resulting values to that function.

@param   mixed       $start_value
@param   \Closure    $fold_with      a -> File -> a
@return  Recursor
Fold over all files in this directory and subjacent directories .