(bind-func filter:[List{!a}*,[bool,!a]*,List{!a}*]*
(lambda (pred xs)
(let ((f (lambda (l)
(if (null? l)
null
(if (pred (car l))
(cons (car l) (f (cdr l)))
(f (cdr l)))))))
(f xs))))