如何仅使用 lisp 中的列表函数创建带有点对的列表?

Mar*_*son 0 lisp common-lisp

假设我有以下列表:(A B . D)

我如何仅通过使用列表函数来重现这个?

(list 'A 'B '. 'D)不管用。

Syl*_*ter 5

你不能。创建列表的构造函数是cons. 正确的列表只是空列表或一个或多个列表,cons其中最后一个列表的值为cdr. list只创建适当的列表。例如。 (list 'a 'b 'c)是一个函数,它的作用是(cons 'a (cons 'b (cons c '()))).

(a b . d)创建与(cons 'a (cons 'b 'd)). 它不是一个正确的列表,因为它以dand not结尾nil。因此不可能用 来创建这个结构list


ex *_*ilo 5

我不确定你真正想在这里做什么,但这似乎正是目的list*

CL-USER> (list* 'a 'b 'd)
(A B . D)
Run Code Online (Sandbox Code Playgroud)