LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Есть, конечно, но я понятия не имею как её вам объяснить.

А ты постарайся :)

Ну, наконец на третий день картина стала более-менее складываться. Причём не в момент, когда я сидел за компьютером, а в момент, когда я на тачке возил глину.

Начну издалека. Есть языки с бедным алфавитом идентификаторов (Си, Java, Js, Python) и с богатым (лисп, тикль, sql, файловая система). В богатых возникает нужда в quoted identifiers, поскольку алфавит идентификатора пересекается с множеством отделителей токенов языка.

В тикле, и кавычки, и {} - это лишь способы закавычивания, отличающиеся наличием или отсутствием интерполяции. И это значит, что в рамках этой модели нельзя отличить строку с пробелами от списка. Одного лишь сохранения {} недостаточно.

В том же лиспе есть литералы символа, «строки» и `квазицитаты. Символы бывают обычные и закавыченные, т.е. |foo bar|. Если делать таблицу соответствия с tcl, то получается, что {} и «» одновременно выполняют роль конструктора списка, ограничителей литерала строки, сломанной квазицитаты и ограничителей закавыченного символа. При этом обычное слово без кавычек может быть символом, строкой или числом. А определение того, чем является данный токен, происходит только в момент использования. Офигеть!

Исправление den73, :

Есть, конечно, но я понятия не имею как её вам объяснить.

А ты постарайся :)

Ну, наконец на третий день картина стала более-менее складываться.

Начну издалека. Есть языки с бедным алфавитом идентификаторов (Си, Java, Js, Python) и с богатым (лисп, тикль, sql, файловая система). В богатых возникает нужда в quoted identifiers, поскольку алфавит идентификатора пересекается с множеством отделителей токенов языка.

В тикле, и кавычки, и {} - это лишь способы закавычивания, отличающиеся наличием или отсутствием интерполяции. И это значит, что в рамках этой модели нельзя отличить строку с пробелами от списка. Одного лишь сохранения {} недостаточно.

В том же лиспе есть литералы символа, «строки» и `квазицитаты. Символы бывают обычные и закавыченные, т.е. |foo bar|. Если делать таблицу соответствия с tcl, то получается, что {} и «» одновременно выполняют роль конструктора списка, ограничителей литерала строки, сломанной квазицитаты и ограничителей закавыченного символа. При этом обычное слово без кавычек может быть символом, строкой или числом. А определение того, чем является данный токен, происходит только в момент использования. Офигеть!

Исходная версия den73, :

Есть, конечно, но я понятия не имею как её вам объяснить.

А ты постарайся :)

Ну, наконец на третий день картина стала более-менее складываться. И кавычки, и {} - это лишь способы закавычивания, отличающиеся наличием или отсутствием интерполяции. И это значит, что в рамках этой модели нельзя отличить строку с пробелами от списка. Одного лишь сохранения {} недостаточно.

Т.е. в том же лиспе есть символы, строки и квазицитаты. Символы бывают обычные и закавыченные, т.е. |foo bar|. В Си и JS такого вообще нет, зато такое есть в SQL и в файловой системе. Есть языки с бедным алфавитом идентификаторов (Си, Java, Js, Python) и с богатым (лисп, тикль, sql, файловая система). В богатых возникает нужда в quoted identifiers, поскольку алфавит идентификатора пересекается с множеством отделителей токенов языка. Если делать таблицу соответствия с tcl, то получается, что {} и «» одновременно выполняют роль конструктора списка, ограничителей литерала строки, сломанной квазицитаты и ограничителей закавыченного символа. При этом обычное слово без кавычек может быть символом, строкой или числом. А определение того, чем является данный токен, происходит только в момент использования. Офигеть!