Артём Неганов писал(а):
...
Мне не совсем ясно, что имеется ввиду - поддержка синтаксиса и процедурной части языка, или серьезная поддержка современного JavaScript, как объектного процедурно-функционального языка? И вообще, ДРАКОН умеет это делать?
...
 Первое - на что уже указали. И некоторая конкретика.
usr345 писал(а):
...
Для этого нужно использовать что-то другое, позволяющее визуализировать, как меняется структура данных по ходу работы программы.
Для первой функции я бы вообще Дракон не использовал. А нарисовал бы дерево HTML элементов и пояснение, как идет обход дерева в коде:
Код:
node = node.firstChild;
  while (node) {
    walk(node, func);
    node = node.nextSibling;
  }
...
 Да, это уже будет спецификация программы. Подобно тому, как 
обсуждалось для 
этой статьи - см. раздел "Балансировка".
Подобная задача ставилась раньше. Вот некоторые мысли: 
viewtopic.php?p=72538#p72538 - м.б. поможет.
usr345 писал(а):
...
Отвечаю на вопросы:
1. как описывать наиболее интересные prototypes и наследование объектов
На Драконе - никак. Это язык для описания алгоритмов, а не структур данных.
 Короче, в связке д.б. схемы типов. Допустим, такие, как 
здесь описано. Но также нужно как-то задать связывание данных и действий в исполнителе. Т.е. снова возвращаемся к задаче, указанной выше...
Мейер для своей системы решил задачу реализацией схемы наследования. Синтаксис и примеры можно найти в выдержке отсюда: 
viewtopic.php?p=72093#p72093. Решение кажется в целом оптимальным для "классовых" языков. По структуре такие схемы, конечно, не маршрутные, как импер-схемы процессов. Это или "прошитые" деревья, или сети (многосвязные графы). Их тоже можно выводить "исчислением графов".
usr345 писал(а):
...
2. closures
Функциия, возвращающая другую функцию. Это гибрид структуры и процесса. На чистом Драконе вы сможете описать только процесс. Для описания closure как таковой придется использовать что-то дополнительно к Дракону.
 Видимо, снова схему типа - только процедурного.
usr345 писал(а):
...
3. события
Событие - это просто функция плюс условия, при котором она будет вызвана: нажатие клавиши, таймер и т.д.
 Условие вызова, конечно, является частью схемы вызывающего процесса - вместе с оператором вызова-возврата (обычно Вставкой). Также его можно продублировать в схеме процесса-обработчика события - как часть предусловия. Возможный синтаксис предусловий см. в 
этом примере.
usr345 писал(а):
...
4. callbacks
Функция в качестве аргумента. Аналогично: гибрид процесса и структуры.
 Тут, пожалуй, как со вторым - только уже процедуру передаём как параметр.