func FilterPtrErr(f func(*Employee) (bool, error), list []*Employee) ([]*Employee, error) {
	if f == nil {
		return []*Employee{}, nil
	}
	var newList []*Employee
	for _, v := range list {
		r, err := f(v)
		if err != nil {
			return nil, err
		}
		if r {
			newList = append(newList, v)
		}
	}
	return newList, nil
}
FilterPtrErr takes two arguments
1. Function: takes 1 argument of type Employee and returns (bool, error)
2. slice of type []*Employee

Returns:
new filtered list and error
package employee
import _ "reflect" 
import "sort" 
import "sync"
import "time"
import "github.com/logic-building/functional-go/fp" 
func Map(f func(Employee) Employee, list []Employee) []Employee {
	if f == nil {
		return []Employee{}
	}
	newList := make([]Employee, len(list))
	for i, v := range list {
		newList[i] = f(v)
	}
	return newList
}
func MapPtr(f func(*Employee) *Employee, list []*Employee) []*Employee {
	if f == nil {
		return []*Employee{}
	}
	newList := make([]*Employee, len(list))
	for i, v := range list {
		newList[i] = f(v)
	}
	return newList
}
func MapPtrErr(f func(*Employee) (*Employee, error), list []*Employee) ([]*Employee, error) {
	if f == nil {
		return []*Employee{}, nil
	}
	newList := make([]*Employee, len(list))
	for i, v := range list {
		var err error
		newList[i], err = f(v)
		if err != nil {
			return nil, err
		}
	}
	return newList, nil
}
func MapErr(f func(Employee) (Employee, error), list []Employee) ([]Employee, error) {
	if f == nil {
		return []Employee{}, nil
	}
	newList := make([]Employee, len(list))
	for i, v := range list {
		var err error
		newList[i], err = f(v)
		if err != nil {
			return nil, err
		}
	}
	return newList, nil
}
func Filter(f func(Employee) bool, list []Employee) []Employee {
	if f == nil {
		return []Employee{}
	}
	var newList []Employee
	for _, v := range list {
		if f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}
func FilterPtr(f func(*Employee) bool, list []*Employee) []*Employee {
	if f == nil {
		return []*Employee{}
	}
	var newList []*Employee
	for _, v := range list {
		if f(v) {
			newList = append(newList, v)
		}
	}
	return newList
}