Информация об изменениях

Сообщение Re[15]: Упоротость С++ от 05.09.2023 8:39

Изменено 05.09.2023 8:59 vdimas

Re[15]: Упоротость С++
Здравствуйте, Serginio1, Вы писали:

S>>>Интересно. Спасибо. Но это не ПМ.

V>>Это именно покрытие сценариев из ПМ — выразительное ветвление по видам конструкций данных.
S>Там подобие OneOf<T1, T2, T3>

ПМ изначально предназначался для ветвления по значению discriminated union, т.к. необходимо было из общего типа объединения получить в строготипизированном виде частный тип его значения.

Все остальные "развития ПМ" были и есть непринципиальными/необязательными и представляют из себя не более чем сахар над цепочкой if-elseif-...-else.
И именно в этом месте возможности ПМ у различных языков заметно отличаются, но, положа руку на, это всё сахарок, т.е. не является тем нечто, без чего никак.

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

В Хаскеле такой ПМ происходит по закрытому объединению, является строгим, не позволит абыть обработать все допустимые варианты DU.
В C# типы открыты, получается малость профанация, хотя и удобно синтаксически. ))


S>>>ФП в С++ уступает C#?

V>>Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.
S>Это уже не ПМ.

Это ты оперируешь чуйкой? ))
Нет размеченных объединений — не нужен ПМ.

В C#, если что, все объекты представляют из себя размеченное объединение System.Object.


S> Кстати

S>interceptors понравились для SG.
S>Теперь и существующий код можно подменять!
S>https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md

Да, я смотрел на это уже, бо в дотнете традиционной головной болью является то, что нормальный логгер принципиально невозможно прикрутить, чтобы реализовать все привычные его св-ва.
Сейчас любая реализация логгера выглядит и работает максимально уродско, и ничего ты с этим не сделаешь.
(распишу подробней, если любопытно)

Фича по ссылке должна помочь сделать всё красиво, в сочетании с interpolation string handler.

А всего-то надо было натравить плюсовиков на дотнет, чтобы рассказали, чего в этом недоделанном дотнете не хватает для беззаботной жизни. ))
Re[15]: Упоротость С++
Здравствуйте, Serginio1, Вы писали:

S>>>Интересно. Спасибо. Но это не ПМ.

V>>Это именно покрытие сценариев из ПМ — выразительное ветвление по видам конструкций данных.
S>Там подобие OneOf<T1, T2, T3>

ПМ изначально предназначался для ветвления по значению discriminated union, т.к. необходимо было из общего типа объединения получить в строготипизированном виде частный тип его значения.

Все остальные "развития ПМ" были и есть непринципиальными/необязательными и представляют из себя не более чем сахар над цепочкой if-elseif-...-else.
И именно в этом месте возможности ПМ у различных языков заметно отличаются, но, положа руку на, это всё сахарок, т.е. не является тем нечто, без чего никак.

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

В Хаскеле такой ПМ происходит по закрытому объединению, является строгим, не позволит забыть обработать все допустимые варианты DU.
В C# типы открыты, получается малость профанация, хотя и удобно синтаксически. ))


S>>>ФП в С++ уступает C#?

V>>Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.
S>Это уже не ПМ.

Это ты оперируешь чуйкой? ))
Нет размеченных объединений — не нужен ПМ.

В C#, если что, все объекты представляют из себя размеченное объединение System.Object.


S> Кстати

S>interceptors понравились для SG.
S>Теперь и существующий код можно подменять!
S>https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md

Да, я смотрел на это уже, бо в дотнете традиционной головной болью является то, что нормальный логгер принципиально невозможно прикрутить, чтобы реализовать все привычные его св-ва.
Сейчас любая реализация логгера выглядит и работает максимально уродско, и ничего ты с этим не сделаешь.
(распишу подробней, если любопытно)

Фича по ссылке должна помочь сделать всё красиво, в сочетании с interpolation string handler.

А всего-то надо было натравить плюсовиков на дотнет, чтобы рассказали, чего в этом недоделанном дотнете не хватает для беззаботной жизни. ))