Здравствуйте, Cyberax, Вы писали:
C>Вы еще скажите, что остальные языки .NET кардинально отличаются от C#...
Следует переформулировать: у всех .NET-языков есть т.н. CLS (Common Language Subset) — некая общая часть, которую они все должны поддерживать. Так что можно вообще сказать, что все языки .NET не отличаются друг от друга.
C>Угу. Передайте граф объектов из IronPython в Ruby.NET, к некоторым C>объектам в графе добавьте по несколько новых методов, затем распечатайте C>этот граф из Nemerle.
C>И как там с интероперабельностью?
А теперь сделайте то же самое с C++ и Си: передайте граф объектов из C++ в Си, к некоторым объектам добавьте по несколько новых методов, затем распечатайте этот граф из Objective-C.
Естественно, что language-specific фичи вроде макросов или рантайм-геренации методов как в Ruby так и остаются language-specific — выходят за рамки CLS. С этим никто и не спорит.
C>В результате работы получаются сборка. Информация о размерностях величин C>хранится в каких-то атрибутах — было бы неплохо уметь с ними работать C>через какой-то внешний интерфейс. Чего-то типа Foreign Nemerle Interface.
Зачем? Макросы Nemerle — это макросы Nemerle и никого другого. Кроме того, если к классу применяются макросы-атрибуты, то Nemerle на классе оставит специальный атрибут MacroAttribute, из которого можно будет извлечь некоторую инфу о макросе (имя, часть параметров, возможно) впоследствии (с помощью reflection, например).
Кроме того, никто нам не мешает в таком макросе самим делать всё, что угодно, чтобы предоставить какую-то дополнительную информацию коду на том же C#.