    "Given a nonempty stream of [[Summable]] values, return the
     sum of the values."
    see (`function product`)
    shared Value sum<Value>({Value+} values)
            given Value satisfies Summable<Value> {
        value it = values.iterator();
        assert (!is Finished first = it.next());
        variable value sum = first;
        while (!is Finished val = it.next()) {
            sum+=val;
        }
        return sum;
    }