code: private function reduce($from, array $values, array $types, callable $reduce)
      {
          $i = -1;
          return array_reduce(
              $values,
              function ($carry, $item) use ($from, $types, $reduce, &$i) {
                  if (++$i > 0) {
                      $this->validateSeq($from, $types, $carry, $item);
                  }
                  return $reduce($carry, $item, $i);
              }
          );
      }
docs: Reduces and validates an array of values to a single value using a fn.
  
  @param string   $from   String of function:argument_position
  @param array    $values Values to reduce.
  @param array    $types  Array of valid value types.
  @param callable $reduce Reduce function that accepts ($carry, $item).
  
  @return mixed