Здравствуйте, VladD2, Вы писали:
VD>http://www.rsdn.ru/article/nemerle/N2/N2-Project.rsdnml.xmlАвтор(ы): Чистяков Владислав Юрьевич
Дата: 17.05.2012
В данной статье рассказывается о новом проекте языкового фрэймворка – N2
http://stdray.livejournal.com/65441.html?thread=292513#t292513:
>Есть вопросы.
> 1) В гайде ты упоминал, что инструкции, написанные внутри блока scope {}, прозрачно применяются, когда мы входим в блок, и отменяются, когда мы из него выходим. Прозрачно отменяются? Это как?
При выходе из внешнего скопа закрывается и вложенный. При закрытии скопа все его настройки автоматически теряются и начинают действовать настройки внешнего скопа.
> 2) Можно ли механизмом публикации символов реализовать области видимости для параметров по умолчанию, а именно что-то типа:
> def foo(x: Int, y: Int = x * x) = ??? // компилируется
> def bar(x: Int, y: Int = z * z, z: Int = 42) = ??? // ошибка
Такой порядок будет по умолчанию. Вот если не хочется, чтобы параметры были доступны при описании других параметров, то нужно будет указать, что их скопы распространяются только на тело функции.
> 3) Можно ли в текущей модели символов сделать имплиситы, а именно:
> class Foo
> class Bar { def bar = ??? }
> implicit def foo2bar(foo: Foo) = new Bar
> new Foo().<...>
>
><...> должен увидеть bar
Можно. Но это уже будет действовать механизм типизации куда интегрируется механизм разрешения перегрузки.
>4) Можно ли в текущей модели типов реализовать higher-kinded полиморфизм?
Систему типов ты описываешь сам (если не используешь предопределенную). Типизацию — тоже. Так что что опишешь то и будет.
Вопрос только на фиг оно надо? Ну, второго порядка еще куда не шло. А н-ного — перебор, по-моему. В прочем, если есть нужда...
>Экзистенциальные типы? Зависимые типы? Пересечения и объединения? null-safety цейлоновской мощности?
Да нам что? Вы определяете как типы будут унифицироваться. Если в результате унификации два типа дадут пересечение, то будете с ним возиться. Вопрос только во что вы его в последствии преобразуете (когда будете код генерировать).
И вообще, наша задача подогнать модель под реальные потребности, а не заставить всех натягивать свои потребности на имеющиеся возможности. По сему если даже мы что-то не учтем по первой, то поправим потом.
>5) Можно ли реализовать erasure, например, для юзкейса, описанного в треде выше?
Если я правильно понял что ты хочешь, то в N2 этого просто не нужно. В исходном языке типы такие какие они есть и не нужно их удалять/стерать. А вот кода ты пишешь преобразование в язык более низкого уровня, то ты вполне можешь опустить подробности и сгенерировать более простой тип или более общий.
>6) Аналогичный вопрос про специализацию полиморфных типов для ситуаций, когда рантайм-специализация неприемлема или недоступна.
Мы просто не оперируем такими понятиями. Мы предоставляем общий механизм типизации который можно настраивать под язык. Правила описания типов в своем языке ты задаешь сам. То во что этот код потом развернется тоже задаешь ты сам.
>7) Как планируется реализовывать интеграцию в IDE? Есть ли на эту тему информация?
Есть. И если читать внимательно, то не трудно ее заметить

.
>Особенно интересует скорость отклика.
Ну, мы постараемся чтобы было по шустрее. Можете нам помочь в этом плане исследованиями.