2012-10-15 3 views
0

안녕하세요, 목록을 연결하고 첫 번째 값을 여분의 대괄호 (예 : 함수를 호출 할 때)로 반환하려고합니다. (bracket-head '(a b c)) => ((A) B C). 내가 전화를 걸었을 때 결과를주기 위해이 작업을 수행했습니다. 기능은 '('(a) b c)입니다. 그래서 여기에 내 코드 : 모든목록에있는 인자에 여분의 괄호를 추가하십시오.

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

답변

2

첫째, () 괄호가 아니라 괄호입니다.

다음, "추가 괄호"당신이 목록에서 개체를 래핑 의미 수정하지 않으려면, 당신이해야 할 것은

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

이다, 따라서

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

또는 해당 장소의 목록 :

[17]> (defparameter list (list 1 2 3)) 
LIST 
[18]> (cons (list (first list)) (rest list)) 
((1) 2 3) 
[19]> list 
(1 2 3) 
관련 문제