Здравствуйте, WolfHound, Вы писали:
_>>8. Не видел чем так круто форматирование строк в Nemerle, поэтому непонятно. Но в любом случае разного подобного добра полно и в бусте и отдельно (https://github.com/panzi/formatstring например) — выбирай на любой вкус.
WH>Близко не стояло.
WH>WH>$"Property '$(astProperty.Name)' has invalid type '$t'. Only list of declarations can be decomposed."
WH>
Возможен вот
такой вариантАвтор: Evgeny.Panasyuk
Дата: 12.10.14
:
process_format
(
print,
"val = $value$, cnt = $counter$, ch = $character$, again v=$value$;\n",
counter, character, value
);
_>>9. Ну на такие простенькие dsl (если xml без схем) C++ то уж легко хватает. )))
WH>Вот чтобы прямо с нужным синтаксисом и проверками на этапе компиляции?
raw string literals + обработка строк во время компиляции.
_>>12. Тоже не очень понятно.
WH>Если метод должен быть вызван под локом, а ты забыл сделать лок, и пытаешься вызвать метод, то компилятор даст тебе по рукам.
Такое было в C++98 — помечаешь метод ключевым словом, и компилятор не даст вызывать его без лока.
_>>13. Вообще не понял.
WH>Например, получение строкового имени переменной. Причем если переменная будет переименована, компилятор даст по рукам.
Препроцессор умеет stringify.
_>>14. Ммм, вроде как определённый вывод типов есть и в C# и в C++. Или речь о чём-то другом?
WH>О том, что в немерле он несравнимо мощнее.
В Nemerle есть вывод типов через использование, но не нужно забывать/умалчивать что сами типы-то несравнимо примитивнее — например higher-rank polymorphism'а нет, и соответствующего вывода типов тоже
_>>15. Про локальные функции не понял — зачем они, если есть лямбды? ) Т.е. я когда-то давно был за них (ещё с Паскаля), но теперь то зачем? )
WH>Рекурсивную лямбду изобразить можешь?
Без проблем:
live demo.
_>>Не, это же только недавно появилось.
WH>У gcc код открыт с рождения. Влезай и делай что хочешь.
WH>Но никто не делает. Ибо ад.
Делают, например смотри
ODB:
The ODB compiler uses the GCC compiler frontend for C++ parsing and is implemented using the new GCC plugin architecture. While ODB uses GCC internally, its output is standard C++ which means that you can use any C++ compiler to build your application.
А вообще у GCC изначально были какие-то странные установки, хорошо что Clang появился, и расшевелил его:
https://gcc.gnu.org/ml/gcc/2005-01/msg00008.html
>is there a reason for not making the front ends dynamic libraries which could be linked by any program that wants to parse source code?
Richard Stallman:
One of our main goals for GCC is to prevent any parts of it from being used together with non-free software. Thus, we have deliberately avoided many things that might possibly have the effect of facilitating such usage, even if that consequence wasn't a certainty.
We're looking for new methods now to try to prevent this, and the outcome of this search would be very important in our decision of what to do.
_>>Причём пошло от clang'a и только недавно gcc подтянулся. Вроде тут где-то было обсуждение на эту тему, что теперь можно писать вещи как раз в стиле возможностей Nemerle. Правда пока ничего не видно. Оно и понятно почему — в самом языке и так куча метапрограммирования сидит.
WH>
Вот когда через АПИ компилятора что ни будь, сделаешь, возвращайся.
WH>Поделишься впечатлениями.
WH>А пока поверь на слово что это ад.
Я использовал
Clang ASTMatcher — никакого ада.
_>>Тот же D. )
WH>Ты издеваешься? D рядом не стоял.
С чем? С Nemerle? Почему?