Having `Enum.max/3` that takes a default would of course simplify the code example from my previous comment. But if it is added, then having different variants of the same function (and I do treat `max/1`, `max/2`, `max/3` as variants of the same functions; otherwise it'd become too unweidly and error-prone) kind of sucks.

I can always validate the return value of `Enum.max` myself against `nil` if I so choose. But if it raises, setting up a try block as a part of an algorithm is dirty IMHO.