in lib/collections.go [1129:1150]
func compare(arg ref.Val, cmp types.Int) ref.Val {
list, ok := arg.(traits.Lister)
if !ok {
return types.NoSuchOverloadErr()
}
if list.Size() == types.IntZero {
return types.NewErr("no extremum of empty list")
}
var min comparer
it := list.Iterator()
for it.HasNext() == types.True {
elem, ok := it.Next().(comparer)
if !ok {
return types.NoSuchOverloadErr()
}
if min == nil || elem.Compare(min) == cmp {
min = elem
}
}
return min
}