|
SketchyLISP Reference |
Copyright (C) 2007 Nils M Holm |
| <<[factorial] | [Index] | [for-all]>> |
Conformance: R5.91RS Scheme
Purpose: Extract members that match a given predicate from a list.
Arguments:
P - predicate
A - list
Model:
(define (filter p a)
(cond ((null? a) '())
((p (car a))
(cons (car a) (filter p (cdr a))))
(else (filter p (cdr a)))))
Implementation:
(define (filter p a)
(letrec
((_filter
(lambda (a b)
(cond ((null? a) b)
((p (car a))
(_filter (cdr a) (cons (car a) b)))
(else (_filter (cdr a) b))))))
(_filter (reverse a) '())))
Example:
(filter number? '(abc 123 def 456 ghi)) => (123 456)
| <<[factorial] | [Index] | [for-all]>> |