Re[4]: C# [Proposal] init block for safe initialization of complex
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.01.26 17:18
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Будет похоже, да, но это не будет "замещение".


Нет. Это будет полностью параллельная NRT система. Иначе просто не получается.

_FR>И снова, мы же не нуллабельность, кажется, обсуждаем, а логику инициализации, то есть required — то, что должно работать не только с NRT, но и с любым типом.


Ты явно не разобрался в вопросе. Ключевое слово required — это часть NRT.

Ты не можешь сделать какие-то проверки в анализаторе и при этом параллельно использовать NRT, а required это её часть.

Или ты используешь NRT и сталкиваешься с проблемой курицы яйца, или ты полностью отключает NRT и делаешь расширенный аналог на анализаторе.

_FR>Мне не кажется, что это сложнее NRT.


Это 💯 сложнее, так как это расширение NRT, и.е. NRT + дополнительная логика. Отказавшись от NRT, ты вынужден будешь воспроизвести NRT вручную.

Исходная реализация NRT присутствующая в компиляторе не позволит тебе оставить объект недоинициализированным.

_FR>Позиция же разработчиков языка/компилятора, заключающаяся в том, что если что-то можно сделать анализатором/генератором, то так делать и следует, в целом мне понятна.


Это только в твоих фантазиях можно сделать анализатором. На практике это будет нагромождение костылей.

Нормальная реализация должна быть частью NRT.

Ну или надо выбрасывать NRT и всю логику городить на атрибутах и анализаторе.

И, кстати, тебя ни сколько не смущает, что NRT можно было сделать в виде анализатора?

_FR>Давай лучше подумаем, что, кроме сложности, мешает сделать соответствующий анализатор? Поддержка в языке для полноценной картины, потребует нового модификатора для параметра (C# [Proposal] init block for safe initialization of).


Подумай. Ты явно сделал это очень поверхностно. Я как человек занимавшихся компиляторами, понимаю, что качественно это можно сделать только в рамках подсистемы NRT.

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