Jscheme如何查找列表中的所有事件?

时间:2012-02-19 07:32:19

标签: lisp

(定义myList'(a b c d e a f))

如何返回所有'a'出现的列表。在这种情况下,返回的值是'(a a)

1 个答案:

答案 0 :(得分:1)

您只需使用结果列表迭代列表,并在找到匹配项时查看搜索到的元素:

racket@> (define (occurrences list elem)
           (define (iter list result)
             (cond ((null? list) result)
                   ((equal? (car list) elem)
                    (iter (cdr list) (cons elem result)))
                   (else (iter (cdr list) result))))
           (iter list '()))
racket@> (occurrences '(1 2 3) 1)
'(1)
racket@> (occurrences '(a b c d e a f) 'a)
'(a a)
racket@> 

顺便说一句,我在Racket中写了这个,但它应该适用于任何Scheme方言/实现。