(Во-первых, у вас есть небольшая проблема; я действительно не думаю, что вы хотите заключать в кавычки ваши ключи внутри списка в кавычках; это приведет к созданию ключей, которые на самом деле являются списками, содержащими символ «цитата». По сути, простоне помещайте цитату в цитату.)
Далее: вы можете искать одну из нескольких разных вещей.
Первый и самый очевидный ответ - просто использовать что-то вроде dict-ref
:
#lang racket
(define mylist '([c c] [a a] [* *]))
(dict-ref mylist '*)
... который создает список '(*)
.Вы можете прочитать документы на dict-ref, чтобы понять, почему это список.
Это будет работать до тех пор, пока вы на самом деле не захотите использовать более богатую семантику сопоставления, которую дает вам match
.Если вы просто хотите сопоставить, используя равенство, просто используйте приведенное выше решение.
Итак, допустим, вы ищете ключ, состоящий из буквы 'a, за которой следует число:
#lang racket
(define mylist
'([(c b) c]
[(a 3) a]
[(* *) *]))
(findf (match-lambda [(list (list 'a (? number?)) _) #t]
[other #f])
mylist)