История изменений
Исправление den73, (текущая версия) :
Ладно, раз про тикль и иже пошли такие оживлённые разговоры рядом, напишу тут. Дозрел до мысли про «лисп----», у которого всего два типа данных - список и атом. Список - это не кособокое дерево, а просто список. Вычисление требует пинка (доллар или квадратные скобки). Атом - это тиклевая строка.
Соответственно, виды скобок (условные)
« строка как {} в тикле, т.е. без подстановок »
$слово # получить значение слова
{*}$слово # кортеж из значений слова, которое должно быть списком
{элемент $элемент {подсписок}} # вложенный список, $ не работает
[ процедура $арг1 аргN ] # вычислить аргументы и вызвать
# процедуру
( контейнер индексы )
`{квазицитата ,[подстановка 1] ,$подстановка-2 ,{*}$как-кортеж
[это не трогаем]}
При этом почти везде, где в тикле используется строка как список, у нас используется список как таковой. Список читается по-лисповому, т.е. сразу, а не по мере выполнения, как в модели выполнения тикля. Если нужен DSL, то его можно сделать на базе угловых кавычек (строк, как в тикле).
При этом AST обладает более богатым набором типов, т.к. $,[],квазицитаты и подстановки создают свои типы. Т.е. пока что круг у нас не замкнулся, а имеется спираль. Но пора спать :)
Исходная версия den73, :
Ладно, раз про тикль и иже пошли такие оживлённые разговоры рядом, напишу тут. Дозрел до мысли про «лисп----», у которого всего два типа данных - список и атом. Список - это не кособокое дерево, а просто список. Вычисление требует пинка (ставится доллар в каждом месте, где нужно вычислить что-то).
Соответственно, виды скобок (условные)
« строка как {} в тикле, т.е. без подстановок »
$слово # получить значение слова
{*}$слово # кортеж из значений слова, которое должно быть списком
{элемент $элемент {подсписок}} # вложенный список, $ не работает
[ процедура $арг1 аргN ] # вычислить аргументы и вызвать
# процедуру
( контейнер индексы )
`{квазицитата ,[подстановка 1] ,$подстановка-2 ,{*}$как-кортеж
[это не трогаем]}
При этом почти везде, где в тикле используется строка как список, у нас используется список как таковой. Список читается по-лисповому, т.е. сразу, а не по мере выполнения, как в модели выполнения тикля. Если нужен DSL, то его можно сделать на базе угловых кавычек (строк, как в тикле).
При этом AST обладает более богатым набором типов, т.к. $,[],квазицитаты и подстановки создают свои типы. Т.е. пока что круг у нас не замкнулся, а имеется спираль. Но пора спать :)