"Given a nonempty stream of [[Numeric]] values, return the
product of the values."
see (`function sum`)
shared Value product<Value>({Value+} values)
given Value satisfies Numeric<Value> {
variable value product = values.first;
for (val in values.rest) {
product*=val;
}
return product;
}