Понимание символов на схеме
Мне трудно понять символы в схеме. Следующее смущает меня:
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)
это список номеров.
Я не уверен, что именно тебя отталкивает, но это, вероятно, '
, '
может использоваться для создания символов, а также для создания списков и других вещей. Не все, что начинается с '
это символ