Константы и условная компиляция

Я глубоко убеждён, что константные типы недооцениваются разработчиками компиляторов и, как итог, разработчиками. Константы должны задавать не просто "неизменяемые" данные с удобным доступом, но и участвовать в прекомпиляции (условной компиляции).

Скажем у нас есть такой псевдо-код:

// consts
const C_PARAM:int = 5;
// block 1
if(C_PARAM == 1) {
  trace("Param 1");
}
// block 2
if(C_PARAM == 5) {
  trace("Param 5");
}
// block 3
var i:int = 5 + C_PARAM;
// block 4
if(i == 5 && C_PARAM == 3) {
  trace("xxx");
}
// block 5
if(i == 7 || C_PARAM == 5) {
  trace("yyy");
}
// block 6
if(i == 3 || C_PARAM == 7) {
  trace("zzz");
}

Логично, что после прекомпиляции компилятор должен получить следующий код:

trace("Param 5");
var i:int = 10;
trace("yyy");
if(i == 3) {
  trace("zzz");
}

И не нужно изобретать какие-то дополнительные конструкции условной компиляции. Т.е. необязательно полностью вычислять всю программу, достаточно хотя бы адекватно обсчитать все константы и условия (на невыполнимость и выпилить такие, и на выполнимость и убрать само условие, оставив сам блок), чтобы всем было удобно.

Комментарии

компилятору haxe

компилятору haxe это(через inline) и не только это подсилу.
в мейл-листе Николас периодически раскрывает по чуть-чуть фишки.

Угу.

Да, inline - это сила и мощь! Николас очень грамотно всё делает. Мне в haXe очень МАЛО чего НЕ нравится. В основном я просто наслаждаюсь, когда удаётся попрогать на нём.

под какую

под какую платформу в основном пишешь?

Flash, PHP и экспериментирую с iPhone

У меня 2 игры на Flash, плюс один рабочий сайт на PHP и один в долгой разработке. Ну и парочка экспериментов под iPhone. Правда пом OS X я редко гружусь, поэтому очень мало внимания пока уделяю iPhone, слишком много работы сейчас. Если разгружусь немного, то хотелось бы плотнее заняться iPhone.
___
Тихо, идёт запись!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.