2014-09-18 2 views
3

Я не говорю о переменных ключевых слов (те, что prefixed with a colon), я говорю только о :. Пример из сессии ielm:Что такое двоеточие (:) в Emacs lisp?

ELISP> : 
: 

Казалось бы, переменной, значение которого :, что делает его вид действовать как Нооп like it does in shell. Мне просто интересно, есть ли какая-либо документация об этом. Я не могу найти describe-variable ...

+1

Причина, по которой его значение само по себе является именно тем, что это ключевое слово. :-) Все ключевые слова используют это свойство. – Malabarba

+1

@Malabarba: Но не все, что является самооценкой (константой), является ключевым словом. – Drew

+0

@ Действительно! Хорошо добавил. – Malabarba

ответ

8

: является ключевого слова, то есть Лисп символа которого печать имя начинается с «:». Он удовлетворяет предикату keywordp.

+1

mgalgs: И как дополнение к комментарию Дрю в вашем собственном ответе, см. Также объяснение в 'C-h i g'' (elisp) Constant Variables' RET'. – phils

+0

mgalgs: Фактически, этот узел был связан непосредственно с URL-адресом, который вы дали себе в вопросе, поэтому, вероятно, вы его уже прочитали. Обратите внимание, что вы часто будете видеть код с использованием ключевых слов как «более описательное, чем' t' »значение, где функция просто вызывает аргумент, отличный от' nil'. – phils

-1

Похоже, что это просто переменная, значение которой равно :. Я не могу смотреть его по телефону describe-variable в интерактивном режиме, но я могу смотреть его с (describe-variable :):

:'s value is : 

Documentation: 
Not documented as a variable. 

Edit: нет, это не переменная. См. Принятый ответ.

+0

не переменная. символ, да. символ ключевого слова, да. а не переменная. –

+3

@nicferrier: символ с символьным значением является переменной, поэтому да, вы можете сказать, что это тоже переменная. Тем не менее, это символ * constant *. Обратите внимание, например, что 'defconst' рассматривается в' (elisp) «Определение глобальных переменных». Но, конечно, 'defconst' не определяет действительную константу; значение может быть изменено. (Обязательны ли константы Лиспа - переменные - это еще один вопрос.) – Drew

+2

Whoa. Я не согласен. Значение не может быть изменено. Постоянное определение может быть переоценено. Константа может быть переопределена. И я также не согласен с этим: всегда переменная. Это символ со ссылкой. –

Смежные вопросы