0

大家好,我正在尝试连接一个列表并返回带有额外括号的第一个值,例如,当我调用函数时,(bracket-head '(a b c)) => ( (A) B C ). 我已经完成它以在我调用函数时给出结果'('(a) b c)。所以这是我的代码:

(defun bracket-head (list)
    (append (first list) (rest list))
4

1 回答 1

2

首先,()是括号,而不是括号。

接下来,“额外的括号”意味着您将对象包装在列表中:

[5]> (list 1)
(1)
[6]> (list *)
((1))
[7]> (list *)
(((1)))
[8]> (list *)
((((1))))
[9]> (list *)
(((((1)))))

因此,您需要做的是

[13]> (defparameter list (list 1 2 3))
LIST
[14]> (setf (first list) (list (first list)))
(1)
[15]> list
((1) 2 3)

或者,如果您不想就地修改列表:

[17]> (defparameter list (list 1 2 3))
LIST
[18]> (cons (list (first list)) (rest list))
((1) 2 3)
[19]> list
(1 2 3)
于 2012-10-15T20:28:05.993 回答