t3x.org / nss / filter.html

(Nils' Scheme Snippets)

 
Paren matching: OFF  |  Category: lists  |  Overview  |  Scheme Books  |  License
 

(filter proc1 list) => list

 
Purpose
Extract elements from a list. The predicate p describes the property of the elements to be extracted.
 
Arguments
p predicate
a source list
 
Example
(filter number? '(a 1 b 2 c 3)) => (1 2 3)
(define (filter p a)
  (letrec
    ((filter2
       (lambda (a r)
         (cond
           ((null? a) r)
           ((p (car a)) (filter2 (cdr a) (cons (car a) r)))
           (else (filter2 (cdr a) r))))))
    (filter2 (reverse a) '())))

Copyright (C) 2007 Nils M Holm <nmh @ t3x . org>