Понимание символов на схеме

Мне трудно понять символы в схеме. Следующее смущает меня:

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

Я думал, что понял, почему первый символ является символом, но тогда почему '('x)) не? Может кто-нибудь объяснить, почему?

Для чего это стоит, я использую схему MIT/GNU.

2 ответа

Решение

В схеме '... это сокращение для (quote ...),

таким образом 'x это сокращение для (quote x), А также '(1 2 3) это стенография (quote (1 2 3)),

Когда вычисляется выражение кавычки, значения в кавычках не оцениваются как выражение, а просто возвращаются.

В (quote x) то, что цитируется, является символом x, Так (quote x) оценивает до символа x,

В (quote (1 2 3)) указанное значение является списком. Это оценивает (1 2 3),

В вашем чуть более сложном примере, у вас есть

'('x) что является сокращением для (quote ((quote x))),

Это оценивает список ((quote x)), Которые в большинстве схем печатаются как ('x),

'('x) это список, а не символ. Символы в схеме являются буквенно-цифровыми, как переменные и ключевые слова. Так 'a является символом, и поэтому 'supercalafragalistic, но '(1 2 3) это список номеров.

Я не уверен, что именно тебя отталкивает, но это, вероятно, ', ' может использоваться для создания символов, а также для создания списков и других вещей. Не все, что начинается с ' это символ

Другие вопросы по тегам