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]>> |