안녕하세요 lisp 독학중인데 아래 두 car결과가 예상과 달라서 문의드립니다 결과가 다른간 당연한데 위에건 (nil nil a b) 고 아래건 (nil (a b)) 로 리스트가 포함되는 원리가 궁금합니다 왜그런가요?
(setq test '(a b)) (cons () (cons () test)) (cons () (cons test ()))
'()
; quote 개념 (1 2) => error '(1 2) => (1 2) (cons 1 (cons 2 ())) => (1 2) (equal (cons 1 (cons 2 ())) '(1 2)) => T
(cons 2 '(1)) => (2 1) ; 리스트 (1) 에 2 를 추가함. (cons () '(1)) => (nil 1) ; 리스트 (1) 에 nil 을 추가함. (cons 1 ()) => (1) ; 1 을 가지고 리스트를 만듦. 즉 생성된 리스트의 유일한 원소가 1 임. (cons '(1) ()) => ((1)) ; 리스트 (1)을 가지고 리스트를 만듦. 즉 생성된 리스트의 유일한 원소가 리스트 (1) 임.
(cons () '(1 2)) => (cons () (cons 1 (cons 2 ()))) => (cons () (cons 1 (2))) => (cons () (1 2)) => (nil 1 2)
(cons '(1 2) ()) => (cons (cons 1 (cons 2 ())) ()) => (cons (cons 1 (2)) ()) => (cons (1 2) ()) ; 앞서 설명했듯이 리스트의 리스트를 만듦. => ((1 2))
개념적인 term replacing 이어서 => 이후에 나오는 리스트는 읽기 편하게 ' 없이 썼습니다. 질문하신 예에 적용하는 것은 쉽게 하실 수 있으리라 믿습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
'()
'()
; quote 개념
개념적인 term replacing 이어서 => 이후에 나오는 리스트는 읽기 편하게 ' 없이 썼습니다. 질문하신 예에 적용하는 것은 쉽게 하실 수 있으리라 믿습니다.
댓글 달기