Я пытаюсь определить элемент в соответствии с заданными значениями из другого спискаОбъявление локальной переменной в функции из другого списка
(define foo ; not working but this is general idea
(λ (x ys)
(for/list ([y ys])
(if (eq? x (car y))
(let ('x (cdr y))
(boolean? x)) ; x not passed, returns #f
'())))) ; or use x to do something like (eval ('and x #t))
Желаемый результат:
>(foo 'a '((a . true) (b . false)))
#t
показать булевой (cdr y)
на самом деле переходит на x (только пример, который я пытаюсь)
Алгоритм - поиск по ys
, для которого (car y)
из ea ch в ys
, равным a
, и установите значение boolean (cdr y)
на a
. Поэтому приведенный выше x
должен иметь значение boolean #t
.
Не совсем понятно, почему это не работает.
Машина интерпретированы значение выражения '(let ('x (cdr y)) ...)', вероятно, сильно отличается от того, что вы имели в виду. Это эквивалентно '(let ([quote x] [cdr y]) ...)', где вы говорите, пусть 'quote' =' x' и пусть 'cdr' =' y'. Вероятно, вы имели в виду '(let ([x (cdr y)]) ...)', который говорит let 'x' =' (cdr y) '. Это ты имел в виду? –