Как применить к остальной части первый элемент произвольного s-выражения? - PullRequest
0 голосов
/ 06 мая 2020

В предыдущем вопросе на конкретном примере было предложено следующее решение:

(apply (car `(,xor #t #f)) (cdr `(,xor #t #f)))
; #t

Как будет выглядеть функция, применившая первый элемент списка к остальной части ? Как поставить запятую перед car в произвольном выражении в кавычках, чтобы применить первый элемент списка к остальной части?

1 Ответ

3 голосов
/ 06 мая 2020

Это зависит от того, есть ли у вас идентификатор процедуры?

(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))

(define exp (list 'xor #t #f))
(eval exp ns)

Или у вас есть реальная процедура?

(define exp (list xor #t #f))
(apply (car exp) (cdr exp))

И зачем использовать квазицитирование в вопросе , когда без него можно получить желаемый эффект?

...