func TakeStr(n int, list []string) []string {
	if n < 0 {
		return []string{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]string, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
TakeStr returns n items in the list
package fp
func TakeInt(n int, list []int) []int {
	if n < 0 {
		return []int{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]int, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeIntPtr(n int, list []*int) []*int {
	if n < 0 {
		return []*int{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*int, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt64(n int, list []int64) []int64 {
	if n < 0 {
		return []int64{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]int64, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt64Ptr(n int, list []*int64) []*int64 {
	if n < 0 {
		return []*int64{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*int64, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt32(n int, list []int32) []int32 {
	if n < 0 {
		return []int32{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]int32, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt32Ptr(n int, list []*int32) []*int32 {
	if n < 0 {
		return []*int32{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*int32, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt16(n int, list []int16) []int16 {
	if n < 0 {
		return []int16{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]int16, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt16Ptr(n int, list []*int16) []*int16 {
	if n < 0 {
		return []*int16{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*int16, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt8(n int, list []int8) []int8 {
	if n < 0 {
		return []int8{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]int8, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeInt8Ptr(n int, list []*int8) []*int8 {
	if n < 0 {
		return []*int8{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*int8, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint(n int, list []uint) []uint {
	if n < 0 {
		return []uint{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]uint, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUintPtr(n int, list []*uint) []*uint {
	if n < 0 {
		return []*uint{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*uint, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint64(n int, list []uint64) []uint64 {
	if n < 0 {
		return []uint64{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]uint64, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint64Ptr(n int, list []*uint64) []*uint64 {
	if n < 0 {
		return []*uint64{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*uint64, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint32(n int, list []uint32) []uint32 {
	if n < 0 {
		return []uint32{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]uint32, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint32Ptr(n int, list []*uint32) []*uint32 {
	if n < 0 {
		return []*uint32{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*uint32, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint16(n int, list []uint16) []uint16 {
	if n < 0 {
		return []uint16{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]uint16, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint16Ptr(n int, list []*uint16) []*uint16 {
	if n < 0 {
		return []*uint16{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*uint16, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint8(n int, list []uint8) []uint8 {
	if n < 0 {
		return []uint8{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]uint8, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}
func TakeUint8Ptr(n int, list []*uint8) []*uint8 {
	if n < 0 {
		return []*uint8{}
	}
	newListLen := len(list)
	if n < newListLen {
		newListLen = n
	}
	newList := make([]*uint8, newListLen)
	for i := 0; i < newListLen; i++ {
		newList[i] = list[i]
	}
	return newList
}