"Given a nonempty stream of `Comparable` values,
return the smallest value in the stream."
see (`interface Comparable`,
`function max`,
`function smallest`)
shared Absent|Value min<Value,Absent>(Iterable<Value,Absent> values)
given Value satisfies Comparable<Value>
given Absent satisfies Null {
value first=values.first;
if (exists first) {
variable value min=first;
for (val in values.rest) {
if (val<min) {
min=val;
}
}
return min;
}
else {
return first;
}
}