final public function reduce(Callable $callback, $initial = null)
	{
		$result = array_reduce($this->{self::MAGIC_PROPERTY}, $callback, $initial);

		return static::from($result);
	}
final public function reduce(Callable $callback, $initial = null)
	{
		$result = array_reduce($this->{self::MAGIC_PROPERTY}, $callback, $initial);

		return static::from($result);
	}
final public function reduce ( Callable $ callback , $ initial = null ) { $ result = array_reduce ( $ this -> { self :: MAGIC_PROPERTY } , $ callback , $ initial ) ; return static :: from ( $ result ) ; }
Iteratively reduce the array to a single value using a callback function
@param  Callable $callback mixed callback ( mixed $carry , mixed $item )
@param  mixed    $initial  Optional intitial value of $carry in $callback
@return mixed              Returns the resulting value.
Iteratively reduce the array to a single value using a callback function