public function reduceRight(callable $function)
    {
        if ($this->isEmpty()) {
            return null;
        }

        list($head, $tail) = $this->reverse()->headAndTail();

        return array_reduce($tail->all(), $function, $head);
    }