Sorry, that got sent too soon. 

On Sun, Jul 5, 2020 at 1:59 PM Christopher Barker <> wrote:
On Sun, Jul 5, 2020 at 6:15 AM MRAB <> wrote:
> clamp(value: Number, minimum: Union[Number, Iterable[Number]], maximum: Union[Number, Iterable[Number]])
What would that return? What if the iterables were two different

If anything, I would accept an iterable for the value, and return an iterator.

min() with an iterable is essentially  a reduce. clamp() with an iterable would be a map.

Though then there is the question of what to return for a scalar value: an iterator with one value or a scalar? 

So maybe these kinds of operations should be left to numpy.