WJ wrote:
> Pascal J. Bourguignon wrote:
>
> > Indeed, LOOP is very basic and already provides all you want:
> >
> > (let ((list '(a :foo b :bar c))
> > (collect '()))
> > (loop
> > (unless list (return collect))
> > (let ((elt (pop list)))
> > (case elt
> > ((:foo :bar) (do-something-with elt))
> > (t (push elt collect))))))
> >
> > prints:
> > (DONE SOMETHING WITH :FOO)
> > (DONE SOMETHING WITH :BAR)
> >
> > --> (C B A)
Gauche Scheme:
(let1 stuff '(a :foo b :bar c)
(filter
(lambda (elt)
(when (member elt '(:foo :bar))
(print #"Did something with ~elt")
#f))
stuff))
Did something with foo
Did something with bar
(a b c)