Здравствуйте, 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 — функциональный тип.
В другой жизни разве что. Слишком многое завязано.