列表中带有引号的球拍(方案)

Racket (Scheme) with quotes inside lists

我对 Racket(方案)和程序有问题 "Eval"。

要在Dr.Racket中检查"eval",我们可以输入解释器,例如

(eval '(+ 5 2))

如果我们使用列表,我们可以有,

(eval '(append '(a) '(b)))

那个returns、

'(a b)

直到这里一切都很好, 但我想做类似的事情:

(define x_list '(append a))
(define y_list '(b c))

(eval (list (car x_list) (cdr x_list) (list (car y_list)))) 

这显然行不通,因为没有引号 在列表前面,即正在做的是,

(eval '(append (a) (b)))

我的问题是,有什么方法可以把引号放在 使这个工作在列表前面??

(eval (list (car x_list) (cdr x_list) (list (car y_list))))

试试这个:

(eval (list (car x_list) `',(cdr x_list) `',(list (car y_list))))
=> '(a b)

诀窍是使用准引用,查看 documentation 了解更多详情。