func (list *Pair) Filter(predicate func(x interface{}) bool) (result *Pair) {
	for pair := list; pair != nil; pair = pair.Cdr.(*Pair) {
		car := pair.Car
		if predicate(car) {
			result = &Pair{Car: car}
			last := result
			for pair = pair.Cdr.(*Pair); pair != nil; pair = pair.Cdr.(*Pair) {
				car = pair.Car
				if predicate(car) {
					last = last.ncdr(car)
				}
			}
			last.Cdr = (*Pair)(nil)
			return
		}
	}
	return
}
Filter returns all the elements of list that satisfy the predicate. The list
is not disordered -- elements that appear in the result list occur in the same
order as they occur in the argument list. The returned list may share a common
tail with the argument list. The dynamic order in which the various applications
of predicate are made is not specified.

func even(x interface{}) bool {
return x.(int)%2 == 0
}

list.List(0, 7, 8, 8, 43, -4).Filter(even) => (0 8 8 -4)
package list