Re[6]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:28
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Это понятно, но не в рамках одного языка же. Шизофрения какая-то, в тексте "record", в коде "data class".


ARK>Да и, откровенно говоря, само словосочетание "data class" мне кажется убогим. Какая разница, класс это на самом деле или нет. Делегаты тоже классы, почему бы не назвать их "callable class"?


Причем новое лючевое слово все равно вводят. Можно было бы тупо писать "record" вместо "data class" или хотя бы "data".

Тут явно вкусовщина. Причем еще и дурацкая.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:29
Оценка:
Здравствуйте, nikov, Вы писали:

N>Синтаксис впечатляющий:


+1

N>
N>    < 3000 => 10.00m - 2.00m,
    >>= 3000 and <= 5000 => 10.00m,
    >> 5000 => 10.00m + 5.00m,
N>


А что им мешало хотя бы && использовать? Вроде конфликтов не видно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Лигатуры
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:31
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Еще пару редакций и будет полноценный perl


Не. Зря они решили от левого операнда избавиться. А "and" просто костыль страшный.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Summer of Code ...
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:41
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Сделать одну фундаментальную фичу макросы — и вот эти "нововведения" запилит студент в корридоре кампуса на стажировке.


Если их правильно сделать, то все последующие фичи можно запелить силами студентов. Но вот поднять их без аналога Нитры не реально. А на Нитру они еще 20 лет убьют, сч их подходами.

Им надо меня с Хардкейсом на работу взять и дать нам человек 5 в подчинение. Будут тогда супер-макросы через год-два.

_> Собственно от "топовых" новинок именно такое ощущение. Если бы это выкатили пакетом в NuGet — не факт что я бы его подключил.


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

_>Ну и конечно фичи есть куда развивать. Явно нехватает двух вещей: value-type records это раз.


Может и есть. Не вижу почему бы не сделать data применимым к struct. Может потому data и выбрали, что он применяется не только к class.

_>И скобочек на клавиатуре для них это два.


_>И только Covariant returns штука хорошая, даст возможность выкинуть куски повторяющегося и тупого кода.


Не. Все нововведения полезны. Я в Немерле в 90% случаях имьютабельные рекорды использую. Вопрос лишь синтаксиса. with в Немерле тоже не хватает. Согласен, что можно сделать макрами.

Но до макросов они морально не доросли пока.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:42
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Налицо явный многолетний тренд на возрождение Паскаля. Дочитал до "with" и аж вздрогнул. А так — чувствуется лютое влияние Kotlin и Swift (читай — стараются не отставать от Google и Apple).


Какой еще Паскаль? Открой для себя ML!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:46
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Подозреваю что они отказались от && и || потому что если писать с ними качественный продакшен код:

_>
  >>= 3000 && <= 5000 => 10.00m,
_>  < 3000 || > 5000 => 10.00m + 5.00m,
_>

_>можно сломать и ихний машинный парсер и нашый человечий

А зачем изобретать велосипед? Можно было вилдкардом заменить^
  _ >>= 3000 && _ <= 5000 => 10.00m,
  _ <   3000 || _ >  5000 => 10.00m + 5.00m,

Bли переменной вводимой в паттерне, как у всех:
  x when x >>= 3000 && x <= 5000 => 10.00m,
  y when y <   3000 || y >  5000 => 10.00m + 5.00m,
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Welcome to C# 9.0
От: Ночной Смотрящий Россия  
Дата: 25.05.20 11:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Причем новое лючевое слово все равно вводят. Можно было бы тупо писать "record" вместо "data class"


А вместо data struct?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Welcome to C# 9.0
От: Ночной Смотрящий Россия  
Дата: 25.05.20 11:49
Оценка:
VD>Bли переменной вводимой в паттерне, как у всех:
VD>
VD>  x when x >>= 3000 && x <= 5000 => 10.00m,
VD>  y when y <   3000 || y >  5000 => 10.00m + 5.00m,
VD>


А это уже работает и так.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:51
Оценка: 2 (1) +1
Здравствуйте, AlexRK, Вы писали:

ARK>Ну понятно, что написать что-то вроде:

ARK>
ARK>(value >= 3000) && (value <= 5000) => 10.00m,
ARK>(value < 3000) || (value > 5000) => 10.00m + 5.00m,
ARK>

ARK>- это не судьба.

ARK>Что за тупые ублюдки там язык дизайнят?


С кортежами не совместимо. В Немерле можно так:

match (Foo(), Bar())
{
  | (5001, y) when y <= 5000
  | (x,    y) when x >= 3000 && y <= 5000
}
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Summer of Code ...
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:52
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>data struct вроде уже есть. Но доживут ли они до релиза — ХЗ, там есть некоторое количество логических проблем.


Это что за логические проблемы такие? И почему они не мешают F# и Nemerle?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:53
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Потому что, скорее всего, будут еще data struct


А record struct не тянет? Или есть какой-то кайф в том, что в доках пишем record, а в коде data?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 11:58
Оценка:
Здравствуйте, vmpire, Вы писали:

S>>Welcome to C# 9.0

V>positional deconstruction — это какая-то шляпа. Ошибки пойдут косяками.

Во всех функциональных языках почему-то не идут. Хотя их уже десятки лет используют.

Их record — это реализация в Шарпе концепции алгебраических типов. В них тип определяется структурой. Ни к каким проблемам это не приводит. Наоборот, делает код проще.

V>Неявные преобразования типов для with — тоже не очень.


Нет там никаких преобразований. Ты на входе и на выходе имеешь один и тот же тип. Просто оперировать ты можешь базовым классом, а в рантайме получишь тот тип, что был.

V>А супер-эконопия на "static void Main()"вообще повысит производительность на порядки.


Это полезно если стоит задача "поиграться". И для тестов. Куча болерплэйта уходит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 12:00
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Релиза еще не было, даже публичного превью не было, официальная терминология тоже не декларировалась, странно придираться к терминам в посту Мэдса.


Странный выбор ключевого слова. А вот к Мэдсу претензий нет. Думаю их еще завалят подобными упреками и они вернутся к record.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 12:03
Оценка:
Здравствуйте, IT, Вы писали:

IT>Боюсь, что из-за такого синтаксиса они уже никогда не сделают как в Немерле что-то типа:


Как я понимаю это замена синтаксису
x when x < 3000 x => 10.00m - 2.00m

так что кортежи должны взлетать. Но придумака так себе, да.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Summer of Code ...
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 12:11
Оценка:
Здравствуйте, rameel, Вы писали:

R>Согласен, covariant returns единственное, что радует. В меньшей степени можно и init свойства сюда отнести. А вот вместо всего остального лучше сделали бы варианты как в немерле


Дык в Немерле кроме вариантов еще мара Record есть, которая к обычным классам и струтурам все перечисленные (кроме with) фичи прикручивает. Очень полезная вещь!

Как я понял они хотят одним выстрелом убить двух зайцев. data будет делать варинты, и рекорды одним синтаксисом. Если есть наследование и sealed, будут варианты. Если нет или структура — рекорды. По сути они только наследованием и отличаются.

R>и запилили квазицитаты,


О, да! Это было бы мега-круто и на Немерле можно было бы поставить крест (так как он свою задачу выполнил бы, а Шарп стал бы его реализацией).

Причем их можно было бы использовать как для Expression Tree, так и для кодогенерации в компайлтайме. Даже если для ET сделали бы было уже очень удобно. Пришлось тут с ET ручками поработать — это жесть как неудобно.

R>а то до генераторов дошли,


Это где? Что-то я пропустил.

R>а до квазицитат не додумались, хотя казалось бы, есть успешный пример применения перед глазами — Expression, ну и еще до кучи typedef как том же немерле или С++.


Еще есть F# где зачатки цитирования тоже есть. В общем, нет в МС решительности. Задрали еже, если честно. Я так на пенсию выйду, а Шарп в Немерл не превратится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Welcome to C# 9.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.20 12:16
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Это просто легализация DTO.


Нет. Это легализация алгебраических типов.

Блин, сначала дал ссылку на русскую Википедию, но там в корне не верное описание алгебраических типов! Какие-то неучи поставили знак раверства между алгебраическим типом и SUM-типом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 25.05.2020 12:22 VladD2 . Предыдущая версия . Еще …
Отредактировано 25.05.2020 12:19 VladD2 . Предыдущая версия .
Re[4]: Summer of Code ...
От: rameel https://github.com/rsdn/CodeJam
Дата: 25.05.20 12:37
Оценка:
Здравствуйте, VladD2, Вы писали:

R>>а то до генераторов дошли,


VD>Это где? Что-то я пропустил.


https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md

Можно дополнять код, но нельзя менять/переписать
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Summer of Code ...
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.05.20 12:48
Оценка:
Здравствуйте, VladD2, Вы писали:


R>>а то до генераторов дошли,

>>Это где? Что-то я пропустил.
http://rsdn.org/forum/dotnet/7719189.flat
Автор: Serginio1
Дата: 01.05.20
и солнце б утром не вставало, когда бы не было меня
Отредактировано 25.05.2020 12:52 Serginio1 . Предыдущая версия .
Re[3]: Welcome to C# 9.0
От: vmpire Россия  
Дата: 25.05.20 12:59
Оценка:
Здравствуйте, VladD2, Вы писали:

S>>>Welcome to C# 9.0

V>>positional deconstruction — это какая-то шляпа. Ошибки пойдут косяками.
VD>Во всех функциональных языках почему-то не идут. Хотя их уже десятки лет используют.
Про функциональные языки не скажу, но что будет если поменять порядок объявлений в классе? Всё же поедет. А если типы данных поменянных членов совпадут, то ошибка ещё и не сразу вылезет.

VD>Их record — это реализация в Шарпе концепции алгебраических типов. В них тип определяется структурой. Ни к каким проблемам это не приводит. Наоборот, делает код проще.

V>>Неявные преобразования типов для with — тоже не очень.
VD>Нет там никаких преобразований. Ты на входе и на выходе имеешь один и тот же тип. Просто оперировать ты можешь базовым классом, а в рантайме получишь тот тип, что был.
Вот это и напрягает, когда вместо базового класса появляется производный. Нет, если LSP в порядке, то проблем не будет. Но вот если не в порядке...
Хотя тут, скорее всего, дело привычки. Нужно просто запомнить, как это работает.

V>>А супер-эконопия на "static void Main()"вообще повысит производительность на порядки.

VD>Это полезно если стоит задача "поиграться". И для тестов. Куча болерплэйта уходит.
Эта "куча" — 2 строки кода.
Единественно когда это может быть полезно, так это если делать интерпретатор, как в скриптовых языках.
Re[4]: Welcome to C# 9.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.05.20 13:12
Оценка:
Здравствуйте, vmpire, Вы писали:


V>Про функциональные языки не скажу, но что будет если поменять порядок объявлений в классе? Всё же поедет. А если типы данных поменянных членов совпадут, то ошибка ещё и не сразу вылезет.


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