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 に答える