LISP Scheme Part7
■ このスレッドは過去ログ倉庫に格納されています
0751734
NGNG条件を満たすものと満たさないものを両方返す手続きで
2度filterにかける無駄を回避。
748さんのはこのdivideに近いと思います。
(define (divide f a)
(let loop ((x '()) (y '()) (a a))
(cond ((null? a) (list (reverse x) (reverse y)))
((f (car a)) (loop (cons (car a) x) y (cdr a)))
(else (loop x (cons (car a) y) (cdr a))))))
(define (hoge f a)
(let loop ((r '()) (a a))
(if (null? a) (reverse r)
(apply (lambda (x y) (loop (cons x r) y))
(divide (lambda (x) (f (car a) x)) a)))))
■ このスレッドは過去ログ倉庫に格納されています