[LISP] 리스트와 콘셀 차이점이 이해되지 않습니다
글쓴이: gurumong / 작성시간: 화, 2012/07/31 - 2:43오전
리스트 추상적인것이고 그것은 콘셀로 이루어져있다고 책에서 배웠습니다
결국 리스트나 콘셀이나 같다는 의미 같은데요
다음와 같은 코드에서는 왜 서로 다른 평가 값이 출력되는것인지 이해를 하질 못하겠습니다
> '(expt 2 3) (expt 2 3) > (cons 'chicken 'cat) (CHICKEN . CAT)
서로 같은 것이라면 일관성있게 아래처럼 나와야 할꺼 같은데 말이예요
(expt . 2 . 3) (CHICKEN . CAT) <--- 점이 다 똑같이 있거나
(expt 2 3) (CHICKEN CAT) <--- 점이 다 똑같이 없거나
Forums:
콘셀을 (콘 -> 셀)로 표현한다면, 전자는
콘셀을 (콘 -> 셀)로 표현한다면, 전자는 (expt -> (2 -> (3 -> nil)))이고 후자는 (chilken -> cat)입니다.
전자는 '셀'이 언제나 리스트인 반면, 후자는 심볼입니다. 전자는 nil로 끝나고, 후자는 그렇지 않습니다.
(expt . 2 . 3) 이런 형태는
(expt . 2 . 3) 이런 형태는 없어요.
콘셀은 리스트가 아니구요.
(CHICKEN . CAT) 이런 형태가 콘셀의 끝입니다.
다른 형태의 콘셀은 없구요.
이런 콘셀이 중첩된게 리스트입니다.
리스트의 마지막은 nil 이 들어가구요.
리스트를 풀어보면
(a . (b . (c . nil))) 이렇게 됩니다.
댓글 달기