Scheme의 심볼을 이해하는 데 어려움을 겪고 있습니다.스키마의 심볼 이해
1 ]=> (symbol? 'x)
; Value: #t
1 ]=> (symbol? '('x))
; Value: #f
는 내가 첫 번째가 상징 이유를 이해 생각했지만, 왜 '('x))
되지 않습니다 : 다음은 나를 혼란? 누군가 이유를 설명해 주시겠습니까?
나는 가치가있다. MIT/GNU Scheme을 운영 중이다.
Scheme의 심볼을 이해하는 데 어려움을 겪고 있습니다.스키마의 심볼 이해
1 ]=> (symbol? 'x)
; Value: #t
1 ]=> (symbol? '('x))
; Value: #f
는 내가 첫 번째가 상징 이유를 이해 생각했지만, 왜 '('x))
되지 않습니다 : 다음은 나를 혼란? 누군가 이유를 설명해 주시겠습니까?
나는 가치가있다. MIT/GNU Scheme을 운영 중이다.
도식 '...
은 (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)
으로 인쇄됩니다.
'('x)
은 목록이 아니라 기호입니다. Scheme의 기호는 변수 및 키워드와 마찬가지로 영숫자입니다. 따라서 'a
은 기호이고 'supercalafragalistic
이지만, '(1 2 3)
은 숫자 목록입니다.
나는 무엇이 너를 던지고 있는지 확실하지 않지만 아마도 '
일 것이다. '
은 기호를 만드는 데 사용할 수 있지만 목록 및 기타 항목도 만들 수 있습니다. '
으로 시작하는 모든 것이 기호입니다.
글쎄, 실제로 그들은 영숫자 일 필요는 없습니다. Scheme은 실제로 자유로운 명명 규칙을 가지고 있습니다. 예를 들어''* foo * '는''foo'와 마찬가지로 많은 유효한 기호입니다. – oobivat
@oobivat, 나는 그것을 알고 있습니다. –
예,이 경우 구체적으로 생각하는 것이 좋습니다. – oobivat