Здравствуйте, Аноним, Вы писали:
H>>Вы понимаете как выводятся типы в Nemerle?
А>Да.
А>Строится система логических(ограничений) уравнений и решается.
Эта система потенциально неполная — ввиду того, что изначально код содержит нераскрытые макросы уровня выражений. По мере раскрытия макросов эта система дополняется все новыми ограничениями и переменными типов. Добавьте сюда тот факт, что макросы могут использовать информацию о типах (как, например, это делает foreach) при трансформации кода. В таких условиях сделать не-итерационный процесс вывода типов — невозможно.
И, кстати, не нужно сюда мешать "стадии макросов" — эти стадии имеют отношение лишь к макроатрибутам, и связаны с процессом компиляции AST верхнего уровня (построение иерархии наследования классов, поиск частей классов, и т.п.).