func compare()

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
}