Re: N2 - финальная бэта статьи
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.05.12 20:23
Оценка:
Здравствуйте, 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? Есть ли на эту тему информация?


Есть. И если читать внимательно, то не трудно ее заметить .

>Особенно интересует скорость отклика.


Ну, мы постараемся чтобы было по шустрее. Можете нам помочь в этом плане исследованиями.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.