Your functions work if you just negate the predicate on one line of filter-help (and change the name filter
to filter-out
as intended):
(not (pred (car lst)))
instead of
((pred (car lst))
Though you could write this more briefly by using the built-in filter
with a lambda function:
(define (alt-filter-out pred lst)
(filter (lambda (x) (not (pred x))) lst))
Hope this helps!