こんにちは、私はリストを連結し、最初の値を追加の括弧で返そうとしています。たとえば、関数(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)