При создании системы необходимы определенные правила.
1. Система не должна получить имя уже существующей системы (для того, чтобы была возможность их различать)
2. Имя системы должно удовлетворять некоторым условиям. Поскольку язык немного отличается от большинства остальных эти правила следует рассматривать отдельно. Итак, пока я вижу два условия:
- система не должна содержать в себе пробела, символа табуляции (предлагайте еще знаки);
- система не должна начинаться с цифры (из-за возможного использования в арифметических выражениях - данный вопрос пока проработан слабо).
Вопрос о том должно ли имя системы отличаться от слов, употребляемых в конструкциях диалекта остается открытым, потому что в тех случаях когда я вижу использование имени обычно интерпретатор имеет возможность определить что перед ним - часть конструкции или система в качестве параметра конструкции. Вопрос остается прежде всего в самом человеке - может ли он адекватно читать такие вещи.
Наверно здесь же нужно рассматривать вопрос имен пространств. По умолчанию все грузится в одну ветвь Вселенной (напрямую не доступную программисту). Естественно возможен конфликт имен. И чем больше модулей тем больше вероятности конфликта систем с одинаковыми именами. Я могу их грузить в разные ветви вместо одной (например по именам файлов), но вопрос доступа к системам с одинаковыми имена в разных модулях остается открытым. Может просто все имена из внешних модулей обязательно указывать вместе с именем модуля?