Re[3]: C# 7 - названия и прочее
От: Sinix  
Дата: 29.04.15 21:28
Оценка:
Здравствуйте, VladD2, Вы писали:

S>> Кучу раз спецификацию и синтаксис меняли.

VD>Ну, вот и надо до их ведома довести, что у них смешно получается.
Так c# 7 на сегодня не то что не альфа, только-только начинается отбор фич. Кто просил опенсорса и открытого процесса разработки — получайте

Или надо опять закрыть всё нафиг и выкатывать только прилизанные CTP?


S>>По уму рекорды надо пилить одновременно с primary ctor, PM, тюплами...

VD>Дык, то что они все это в один релиз впихнули, как бэ, намекает на общность фич.
Это понятно. Но на сегодня каждая из фич обсуждается по отдельности, общей спецификации нет. Будем надеяться, объединят.

VD>... Так что делать их нужно вместо и по единым стандартам.

VD>Далее, фичи вроде декомпозиции кортежей, оператора is, объявление переменных в кондишене if-а и т.п. — это все вариации на тему паттерн-матчинга.
Вот тут согласен целиком и полностью В таком изложении предложение очень разумно смотрится. Почти со всем остальным тож соглачен, поскипал, чтобы не плодить лишние цитаты


S>>Если отказываться — надо возвращать declaration expressions.

VD>Это что? Возможность вернуть значение из блока кода?
Не, это
if (dict.TryGetValue(key, out var value)
{
  // do smth with value
}

Мелочь, но в куче мест сводит необходимость тюплов к нулю.


VD>Там 100500 "знатоков" и "дезигнеров". Отсюда до них это скорее дойдет.

VD>Ну, и в лом мне много по английски писать, а у них там русскоязычных хватает.
Так ты не с знатоками общайся, а с design team. Они вот тут перечислены.


VD>>> В F# — discriminated unions.

S>>Мы точно про одно и то же говорим?
VD>Точно. Просто тебе нужно ознакомиться с теорией.
С теорией всё более-менее ок. А вот ничего близкого к
type switchstate =
    | On
    | Off
    | Adjustable of float

в шарпе на сегодня нет. Конечно, можно выразить ч/з наследование, но это всё-таки слегка не то.


VD>Как я понимаю они ввели ключевое слово record для классов с первичным (primary) конструктором. ... Это дает возможность выражать объект такого типа в виде конструктора. А это, в свою очередь, позволяет производить композицию (создание) и декомпозицию объектов с помощью паттерн-матчинга.


Ну да. Но нbкто не запрещает сделать тип с primary ctor но без is operator. Или использовать PM на любом типе дотнета. Эти фичи ортогональны. record просто позволяет получить типовую реализацию без лишнего кода.

VD>is_operator + equality operators проистекают из наличия того самого первичного конструктора.

Ну блин, это opt-in возможности. Можно добавлять, можно не добавлять. Без модификатора record такое поведение красиво не сделать.



S>>Только не две, а три. Рекорды в ту же степь на сегодня.

VD>Не. Их "рекорды" — это аналоги case-классов скалы или вхождений вариантов немерла. Тут ты заблуждавшийся.
Что-то я не заметил. Как насчёт чего-нить вот такого
type switchstate =
    | On
    | Off
    | Adjustable of float

на шарпе? Со всеми прелестями discriminated unions типа контроля со стороны компилятора "проверили все варианты".
Нету этого на сегодня. По крайней мере в публичных источниках.



S>>Причём как я понял из очень обтекаемых комментариев, на CLR team надежды на этот и следующий релизы нет от слова совсем. То ли ресурсов у них нет, то ли совместимость превыше всего.

VD>Эти уроды уже своими отмазками достали. Что они там вообще делают?
Авральными темпами пилят поддержку всего, от дотнета в docker-контейнерах и до интеропа с android и objective-c кодом. Ага, обе платформы поддерживаются в win 10, на build пару часов назад сознались всё-таки. Занятые они, короче.



VD>Самые простые применения — это вместо 100500 Actrion<>, Func<> и Tuple<> заводит по одному типу:

VD>а рантайм уже создает конкретные специализации по необходимости.

Ну а как equals и хэшкод для таких типов определять? Это надо или нормальные макросы впихивать, или не страдать фигнёй и один раз в жизни сгенерить однотипный код. Т.е. или макросы, или кодогенерацию в compile-time.


VD>Ну, и до кучи надо ввести замену этому убогому delegate — функциональный тип.

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