package arrays import ( "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" ) func NewLib() map[string]core.Function { return map[string]core.Function{ "APPEND": Append, "FIRST": First, "FLATTEN": Flatten, "INTERSECTION": Intersection, "LAST": Last, "MINUS": Minus, "NTH": Nth, "OUTERSECTION": Outersection, "POP": Pop, "POSITION": Position, "PUSH": Push, "REMOVE_NTH": RemoveNth, "REMOVE_VALUE": RemoveValue, "REMOVE_VALUES": RemoveValues, "SHIFT": Shift, "SLICE": Slice, "SORTED": Sorted, "SORTED_UNIQUE": SortedUnique, "UNION": Union, "UNION_DISTINCT": UnionDistinct, "UNIQUE": Unique, "UNSHIFT": Unshift, } } func ToUniqueArray(arr *values.Array) *values.Array { hashTable := make(map[uint64]bool) result := values.NewArray(int(arr.Length())) arr.ForEach(func(item core.Value, _ int) bool { h := item.Hash() _, exists := hashTable[h] if !exists { hashTable[h] = true result.Push(item) } return true }) return result }