Returns a min (resp max) element from the collection using the provided cmp
function. In case of a tie, the first element encountered while traversing the
collection is returned. The implementation uses fold
so it has the same
complexity as fold
. Returns None
iff the collection is empty.