2014-09-19 7 views
-2

다음은 단점에 대한 다양한 인수 조합의 출력입니다. 나는 방금 lisp을 배우기 시작했다. 누군가가 나를 이해하도록 도와 줄 수 있습니까?LISP의 각기 다른 점은 무엇입니까?

Break 80 [81]> (CONS '(A) 'B) 
((A) . B) 
Break 80 [81]> (CONS '(A) '(B)) 
((A) B) 
Break 80 [81]> (CONS 'A 'B) 
(A . B) 
Break 80 [81]> (CONS 'A '(B)) 
(A B) 
Break 80 [81]> 
+1

를 [여기.] (http://www.gigamonkeys.com/book/they -called-it-lisp-for-a-reason-list-processing.html) – Mark

+0

[** 14.1 단점 개념 **] (http://www.lispworks.com/documentation/HyperSpec/Body/14_a.htm) –

+0

+1 입력 조합의 순열을 시도하고 체계적으로 시도하는 경우 +1하지만, 연구 노력이 부족한 경우 -1 (득실에 대한 문서를 찾지 못했습니다. li sts 등). –

답변

1

단점 함수는 항상 같은 일을 : 그것은 단점이 인수의 셀 생산하고 있습니다. 단점 셀은 단순히 한 쌍입니다. 쌍의 첫 번째 요소는 자동차이고 두 번째 요소는 cdr입니다.

쓰기 문자 그대로 세포의 경우,이 CDR 이다 YX이다 인용과 표기 (X. Y)를 사용할 수 있습니다. 이 표기법을 사용하여 다음과 같이, 당신은 당신의 예제를 쓸 수 있습니다 (그러나 단지 REPL에서 그것을 시도, 내 말을하지 않음) :

> '((A) . B) ;=> ((A) . B) 
> '((A) . (B)) ;=> ((A) B) 
> '(A . B) ;=> (A . B) 
> '(A . (B)) ;=> (A B) 

을하지만 두 번째 및 네 번째 경우없는 결과를하는 이유 인쇄 우리가 작성한 것과 같은 방식으로? 우리가 cons 셀을 사용하여 연결된 목록을 구현하기 때문에 cons 셀에 특별한 인쇄 규칙이 있습니다.

구체적으로는 14.1.2 Conses as Lists을 읽으십시오. 그러나 목록은 자동차가 목록의 첫 번째 요소이고, 그 cdr이 나머지 목록 (즉, 다른 목록) 인 cons 셀입니다. 즉, 목록 (1 2 3)은 (리터럴 점 표선 표기법 사용) (1. (2. (3.)))과 동일 함을 의미합니다. 당신은 REPL에서 이것을 시도 할 수 있습니다 :

> '(1 . (2 . (3 . nil))) ;=> (1 2 3) 

목록은 매우 근본적인 언어를위한 매우 유용한 인쇄 (및 입력) 규칙입니다. 나도 다른 질문에 대한 답변이에 대한 자세한 내용을 서면으로 작성했습니다 :

+0

@WillNess 죄송합니다! 댓글이 삭제되었습니다. –

+0

왜 죄송합니까? 그것을 언급하지 마세요 == 당신은 환영합니다, 그렇지 않습니까? :)이 댓글은 너의 것 후에 자기 파괴 할 것이다. :) –

+1

@WillNess 'twas 그냥 농담. 당신은 "언급하지 마라."라고 말하면서 제 의견을 삭제했습니다. :) –