Как найти все вхождения в списке? - PullRequest
0 голосов
/ 19 февраля 2012

(определить myList '(abcdeaf))

как я могу вернуть список всех вхождений' a.в этом случае возвращаемое значение равно '(аа)

1 Ответ

1 голос
/ 19 февраля 2012

Вы можете просто перебрать свой список со списком результатов, и при каждом совпадении искать искомый элемент:

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, но он должен работать в любой схемедиалекты / реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...