LINUX.ORG.RU

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

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

Ладно, раз про тикль и иже пошли такие оживлённые разговоры рядом, напишу тут. Дозрел до мысли про «лисп----», у которого всего два типа данных - список и атом. Список - это не кособокое дерево, а просто список. Вычисление требует пинка (доллар или квадратные скобки). Атом - это тиклевая строка.

Соответственно, виды скобок (условные)

« строка как {} в тикле, т.е. без подстановок »
$слово # получить значение слова
{*}$слово # кортеж из значений слова, которое должно быть списком
{элемент $элемент {подсписок}} # вложенный список, $ не работает
[ процедура $арг1 аргN ] # вычислить аргументы и вызвать 
# процедуру 
( контейнер индексы ) 
`{квазицитата ,[подстановка 1] ,$подстановка-2 ,{*}$как-кортеж
  [это не трогаем]}

При этом почти везде, где в тикле используется строка как список, у нас используется список как таковой. Список читается по-лисповому, т.е. сразу, а не по мере выполнения, как в модели выполнения тикля. Если нужен DSL, то его можно сделать на базе угловых кавычек (строк, как в тикле).

При этом AST обладает более богатым набором типов, т.к. $,[],квазицитаты и подстановки создают свои типы. Т.е. пока что круг у нас не замкнулся, а имеется спираль. Но пора спать :)

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

Ладно, раз про тикль и иже пошли такие оживлённые разговоры рядом, напишу тут. Дозрел до мысли про «лисп----», у которого всего два типа данных - список и атом. Список - это не кособокое дерево, а просто список. Вычисление требует пинка (ставится доллар в каждом месте, где нужно вычислить что-то).

Соответственно, виды скобок (условные)

« строка как {} в тикле, т.е. без подстановок »
$слово # получить значение слова
{*}$слово # кортеж из значений слова, которое должно быть списком
{элемент $элемент {подсписок}} # вложенный список, $ не работает
[ процедура $арг1 аргN ] # вычислить аргументы и вызвать 
# процедуру 
( контейнер индексы ) 
`{квазицитата ,[подстановка 1] ,$подстановка-2 ,{*}$как-кортеж
  [это не трогаем]}

При этом почти везде, где в тикле используется строка как список, у нас используется список как таковой. Список читается по-лисповому, т.е. сразу, а не по мере выполнения, как в модели выполнения тикля. Если нужен DSL, то его можно сделать на базе угловых кавычек (строк, как в тикле).

При этом AST обладает более богатым набором типов, т.к. $,[],квазицитаты и подстановки создают свои типы. Т.е. пока что круг у нас не замкнулся, а имеется спираль. Но пора спать :)