2009-12-07 2 views
1

나는 리스프를 배우려고 노력하고 있으며, 나는 나의 첫발을 내디뎠다. (a b (c.d))리스트에서 요소 반환하기

나는 시도했다 : : 어떻게 목록 다음의 C 요소 양식을 얻을 수 있습니다 (caar (last '(a b (c.d))))을하지만 c.d를 반환하고뿐만 아니라 C
C 사이에 공백이있는 경우이 그러나 작동 . , 즉 : (caar (last '(a b (c . d))))

내가 해결하려고하는 문제는 공백없이 지정된 목록이 있습니다. 그게 끝나거나 운동의 오타가 될 수 있습니까?

감사합니다.

LE : Uisng GNU CLISP http://clisp.cons.org/ 가 그 문제는 구현에 의한 것 가능성?

+3

에 더있는 링크가 오타 같은 소리입니다. 어떤 Lisp을 사용하고 있습니까? – CBFraser

+0

이 질문은 이미 게시 한 다른 질문과 어떻게 다른가요? –

+0

저는 처음에는 혀짤배기 수업이 처음이었고 저는 이해가 안되었습니다. 질문이 저에게 다르게 보였습니다. - ?? 비슷한 경우 미안 해요. – daniels

답변

4

코드가 올바르므로 연습 문제에서 오타 (또는 정말로 잘못된 글꼴입니까?)입니다.

Lisp (Common Lisp and Scheme은 지금 막 테스트 한 두 가지이며, Clojure에 대해서는 잘 모릅니다), 심볼 사이의 유일한 구분은 공백과 괄호입니다. 비록. cons에 대한 리터럴 구문으로 사용되는 경우 '(c.d)을 입력하면 합계 셀의 기호 두 개가 아닌 하나의 기호가 목록에 나타납니다. 예를 들어

,

'c.d  ; is one symbol 
'(c . d) ; is two symbols in a single cons cell 
'((c)d) ; is two symbols, the first in a nested list 

편집 : 당신은 커먼 리스프를 사용하고 있기 때문에, 여기 the list of relevant charactersthe reader algorithm입니다. 요약하면 ()이며 종료 문자는입니다. .은 그렇지 않습니다. CLisp은 Common Lisp 스펙에 따라 수행 중입니다.