将额外的括号添加到列表中的参数

时间:2012-10-15 20:19:25

标签: list lisp

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

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

1 个答案:

答案 0 :(得分: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)