Сделать суп из них довольно фол.
В таких языках, как Lisp, идентификатор существует в своем собственном праве как символ, тогда как в языках, которые не являются интроспективными идентификаторами, не существует во время выполнения.
Вы пишете буквальное идентификатор/символ, поставив апостроф перед ним:
[1]> 'a
A
Вы можете создать переменную и присвоить символ буквального к нему:
[2]> (setf a 'Hello)
HELLO
[3]> a
HELLO
[4]> (print a)
HELLO
HELLO
Вы можете установите две переменные на один и тот же символ
[10]> (setf b a)
HELLO
[11]> b
HELLO
[12]> a
HELLO
[13]> (eq b a)
T
[14]> (eq b 'Hello)
T
Обратите внимание, что значения, связанные с b и a, являются собственными е, а значение является буквальным символом «Hello
Вы можете привязать функцию к символу
[15]> (defun hello() (print 'hello))
HELLO
и называете его:
[16]> (hello)
HELLO
HELLO
В общей шепелявости, переменные связывания и функциональное связывание
[19]> (setf hello 'goodbye)
GOODBYE
[20]> hello
GOODBYE
[21]> (hello)
HELLO
HELLO
, но на схеме или JavaScript привязки находятся в одном пространстве имен.
Есть много других вещей, которые вы можете сделать с идентификаторами, если они охарактеризованы как символы. Я подозреваю, что кто-то более осведомленный, чем я, в Lisp, сможет продемонстрировать любые вещи, которые вы не можете сделать с идентификаторами.
Но даже Lisp не может сделать идентификационный суп.
Почему строка литерала не уникальна? – 2009-03-29 19:36:23
, потому что вы можете сказать var a = "Hello"; var b = "Hello"; – Ender
ах да. Спасибо. – 2009-03-29 19:43:37