func UnionInt16(arrList ...[]int16) []int16 {
	resultMap := make(map[int16]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int16, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
UnionInt16 return a set that is the union of the input sets
repeated value within list parameter will be ignored
package fp
func UnionInt(arrList ...[]int) []int {
	resultMap := make(map[int]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionIntPtr(arrList ...[]*int) []*int {
	resultMap := make(map[int]struct{})
	var resultArr []*int
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt64(arrList ...[]int64) []int64 {
	resultMap := make(map[int64]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int64, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt64Ptr(arrList ...[]*int64) []*int64 {
	resultMap := make(map[int64]struct{})
	var resultArr []*int64
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt32(arrList ...[]int32) []int32 {
	resultMap := make(map[int32]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int32, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt32Ptr(arrList ...[]*int32) []*int32 {
	resultMap := make(map[int32]struct{})
	var resultArr []*int32
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}