2012-05-19 4 views
1

Scheme의 심볼을 이해하는 데 어려움을 겪고 있습니다.스키마의 심볼 이해

1 ]=> (symbol? 'x) 
; Value: #t  
1 ]=> (symbol? '('x)) 
; Value: #f 

는 내가 첫 번째가 상징 이유를 이해 생각했지만, 왜 '('x))되지 않습니다 : 다음은 나를 혼란? 누군가 이유를 설명해 주시겠습니까?

나는 가치가있다. MIT/GNU Scheme을 운영 중이다.

답변

4

도식 '...(quote ...)의 약어입니다.

따라서 'x(quote x)의 줄임말입니다. '(1 2 3)은 약식 (quote (1 2 3))입니다.

견적 표현식이 평가 될 때 인용 된 값은 표현식으로 평가되지 않고 단순히 반환됩니다.

(quote x)에서 인용되는 내용은 x입니다. 따라서 (quote x)x 기호로 평가됩니다.

(quote (1 2 3))에서 인용 된 값은 목록입니다. 그것은 (1 2 3)으로 평가됩니다. 당신의 조금 더 복잡한 예에서

, 당신은 (quote ((quote x)))에 대한 속기

'('x)이 있습니다.

이것은 목록 ((quote x))으로 평가됩니다. 대부분의 체계에서 은 ('x)으로 인쇄됩니다.

1

'('x)은 목록이 아니라 기호입니다. Scheme의 기호는 변수 및 키워드와 마찬가지로 영숫자입니다. 따라서 'a은 기호이고 'supercalafragalistic이지만, '(1 2 3)은 숫자 목록입니다.

나는 무엇이 너를 던지고 있는지 확실하지 않지만 아마도 ' 일 것이다. '은 기호를 만드는 데 사용할 수 있지만 목록 및 기타 항목도 만들 수 있습니다. '으로 시작하는 모든 것이 기호입니다.

+1

글쎄, 실제로 그들은 영숫자 일 필요는 없습니다. Scheme은 실제로 자유로운 명명 규칙을 가지고 있습니다. 예를 들어''* foo * '는''foo'와 마찬가지로 많은 유효한 기호입니다. – oobivat

+0

@oobivat, 나는 그것을 알고 있습니다. –

+0

예,이 경우 구체적으로 생각하는 것이 좋습니다. – oobivat