public function fold($start_value, $iteration) {
        return $this->outer_fmap(function($contents) use ($start_value, $iteration) {
            $value = $start_value;
            foreach($contents as $content) {
                $value = $iteration($value, $content);
            }
            return $value;
        });
    }
public function fold($start_value, $iteration) {
        return $this->outer_fmap(function($contents) use ($start_value, $iteration) {
            $value = $start_value;
            foreach($contents as $content) {
                $value = $iteration($value, $content);
            }
            return $value;
        });
    }
public function fold ( $ start_value , $ iteration ) { return $ this -> outer_fmap ( function ( $ contents ) use ( $ start_value , $ iteration ) { $ value = $ start_value ; foreach ( $ contents as $ content ) { $ value = $ iteration ( $ value , $ content ) ; } return $ value ; } ) ; }
Define the function to be iterated with and close this level
of iteration.

@param   \Closure    $iteration  a -> File|Directory -> a
@return  Iterator|a
Define the function to be iterated with and close this level of iteration .