大家好,我正在尝试连接一个列表并返回带有额外括号的第一个值,例如,当我调用函数时,(bracket-head '(a b c)) => ( (A) B C ).
我已经完成它以在我调用函数时给出结果'('(a) b c)
。所以这是我的代码:
(defun bracket-head (list)
(append (first list) (rest list))
首先,()
是括号,而不是括号。
接下来,“额外的括号”意味着您将对象包装在列表中:
[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)