func ReducePtrErr() string {
	return `
func Reduce<FTYPE>PtrErr(f func(*<TYPE>, *<TYPE>) (*<TYPE>, error), list []*<TYPE>, initializer ...<TYPE>) (*<TYPE>, error) {
	var initVal <TYPE>
	var init *<TYPE> = &initVal
	lenList := len(list)
	if initializer != nil {
		init = &initializer[0]
	} else if lenList > 0 {
		init = list[0]
		if lenList == 1 {
			return list[0], nil
		}
		if lenList >= 2 {
			list = list[1:]
		}
	}
	if lenList == 0 {
		return init, nil
	}
	r, err := f(init, list[0])
	if err != nil {
		return nil, err
	}
	return Reduce<FTYPE>PtrErr(f, list[1:], *r)
}
`
}
ReducePtrErr reduces a list to a single value by combining elements via a supplied function
package basic
func ReducePtr() string {
	return `
func Reduce<FTYPE>Ptr(f func(*<TYPE>, *<TYPE>) *<TYPE>, list []*<TYPE>, initializer ...<TYPE>) *<TYPE> {
	var initVal <TYPE>
	var init *<TYPE> = &initVal
	lenList := len(list)
	if initializer != nil {
		init = &initializer[0]
	} else if lenList > 0 {
		init = list[0]
		if lenList == 1 {
			return list[0]
		}
		if lenList >= 2 {
			list = list[1:]
		}
	}
	if lenList == 0 {
		return init
	}
	r := f(init, list[0])
	return Reduce<FTYPE>Ptr(f, list[1:], *r)
}
`
}