Есть ли в компиляторе функция свертки константных выражений?
От: Аноним  
Дата: 12.08.13 11:24
Оценка:
....(<[2+2]>)=<[4]>
....(<[2-mama+2]>)=<[4-mama]>
Re: Есть ли в компиляторе функция свертки константных выражений?
От: CodingUnit Россия  
Дата: 12.08.13 13:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>....(<[2+2]>)=<[4]>

А>....(<[2-mama+2]>)=<[4-mama]>

Не знаю сможет ли компилятор сделать последнее, но сама свертка выражений есть в сборке Nemerle.Compiler.dll пространство имен Nemerle.Compiler модуль ConstantFolder, поддерживает свертку выражений PExpr методом FoldConstants или типизированных TExpr методом FoldTyped.
Re: Есть ли в компиляторе функция свертки константных выражений?
От: hardcase Пират http://nemerle.org
Дата: 12.08.13 14:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>....(<[2+2]>)=<[4]>

А>....(<[2-mama+2]>)=<[4-mama]>

Есть, но тупой. Первое умеет. Второе — нет.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Есть ли в компиляторе функция свертки константных выражений?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.08.13 17:23
Оценка:
Здравствуйте, hardcase, Вы писали:

А>>....(<[2+2]>)=<[4]>

А>>....(<[2-mama+2]>)=<[4-mama]>

H>Есть, но тупой. Первое умеет. Второе — нет.


Со вторым проблема в том, что без знания о типе переменной нельзя сказать допустимо ли такое переписывание или нет. Это только в операциях над целыми порядок не важен, а если это пользовательский тип, то не факт, что он не рассчитывает на порядок. Например, "+" для строк не переживает перестановки аргументов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Есть ли в компиляторе функция свертки константных выражений?
От: IT Россия linq2db.com
Дата: 12.08.13 23:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Со вторым проблема в том, что без знания о типе переменной нельзя сказать допустимо ли такое переписывание или нет.


А разве для первого не нужно знание типа?
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Есть ли в компиляторе функция свертки константных выражений?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.08.13 01:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>А разве для первого не нужно знание типа?


Для первого типы выводятся из литералов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Есть ли в компиляторе функция свертки константных выражений?
От: IT Россия linq2db.com
Дата: 13.08.13 23:31
Оценка:
Здравствуйте, VladD2, Вы писали:

IT>>А разве для первого не нужно знание типа?

VD>Для первого типы выводятся из литералов.

Т.е. тип литерала всё же нужен?
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Есть ли в компиляторе функция свертки константных выражений?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.13 18:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>Т.е. тип литерала всё же нужен?


Тип литерала определяется синтаксисом его записи: 1 — int; 1u — uint; 1.0 — double, и так далее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.