func DistinctBoolP(list []bool) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[bool]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
DistinctBoolP returns true if no two of the arguments are =
package fp
func DistinctIntP(list []int) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctIntPPtr(list []*int) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctInt64P(list []int64) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int64]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctInt64PPtr(list []*int64) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int64]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctInt32P(list []int32) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int32]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctInt32PPtr(list []*int32) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int32]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctInt16P(list []int16) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int16]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctInt16PPtr(list []*int16) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int16]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctInt8P(list []int8) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int8]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctInt8PPtr(list []*int8) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[int8]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctUintP(list []uint) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctUintPPtr(list []*uint) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctUint64P(list []uint64) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint64]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctUint64PPtr(list []*uint64) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint64]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctUint32P(list []uint32) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint32]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctUint32PPtr(list []*uint32) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint32]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctUint16P(list []uint16) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint16]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctUint16PPtr(list []*uint16) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint16]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctUint8P(list []uint8) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint8]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctUint8PPtr(list []*uint8) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[uint8]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}
func DistinctStrP(list []string) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[string]bool)
	for _, v := range list {
		if _, ok := s[v]; ok {
			return false
		}
		s[v] = true
	}
	return true
}
func DistinctStrPPtr(list []*string) bool {
	if len(list) == 0 {
		return false
	}
	s := make(map[string]bool)
	for _, v := range list {
		if _, ok := s[*v]; ok {
			return false
		}
		s[*v] = true
	}
	return true
}