presto-main/src/main/java/io/prestosql/operator/scalar/ArrayReduceFunction.java/ArrayReduceFunction/ArrayReduceFunction
class ArrayReduceFunction:    private ArrayReduceFunction()
    {
        super(new FunctionMetadata(
                new Signature(
                        "reduce",
                        ImmutableList.of(typeVariable("T"), typeVariable("S"), typeVariable("R")),
                        ImmutableList.of(),
                        new TypeSignature("R"),
                        ImmutableList.of(
                                arrayType(new TypeSignature("T")),
                                new TypeSignature("S"),
                                functionType(new TypeSignature("S"), new TypeSignature("T"), new TypeSignature("S")),
                                functionType(new TypeSignature("S"), new TypeSignature("R"))),
                        false),
                true,
                ImmutableList.of(
                        new FunctionArgumentDefinition(false),
                        new FunctionArgumentDefinition(true),
                        new FunctionArgumentDefinition(false),
                        new FunctionArgumentDefinition(false)),
                false,
                false,
                "Reduce elements of the array into a single value",
                SCALAR));
    }