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

Сообщение Re[4]: default(TMonoid) от 09.06.2020 6:43

Изменено 09.06.2020 6:49 Qbit86

Re[4]: default(TMonoid)
Здравствуйте, Sinclair, Вы писали:

S>Не, никакой бури не вызывает.


Это у тебя не вызывает, а я говроил не про тебя. В соседней ветке ещё как вызывает.

S>Я говорю о том, что предлагаемый вариант ролей не шибко помогает.


Согласен. Просто вся ветка перешла от обсуждения полезности «ролей», к обсуждению полезности абстракции моноида.

S>Рулится прямо сейчас:


Всё так.

S>
var m = new M();

S>С учётом того, что статические интерфейсы ты ничем не параметризуешь, дефолтного конструктора вполне достаточно.

Даже конструктор не нужен (его констрейнт и вызов), достаточно default(M) с констрейнтом struct. В той статье «Concept C#: Type Classes for the Masses» именно такой подход рассматривался.

S>Вся разница — код работает прямо сейчас, не дожидаясь C# 12.


Всё верно! (Только я в своих API предпочитаю по старинке протакскивать такие policies явно — более гибко. Но действительно, можно и не параметром метода, а параметром дженерика с инстанцированием через default(T).)

S>С моей точки зрения, для обобщённой операции сложения использовать оператор "+" — баловство.


Категорически согласен.
Re[4]: default(TMonoid)
Здравствуйте, Sinclair, Вы писали:

S>Не, никакой бури не вызывает.


Это у тебя не вызывает, а я говроил не про тебя. В соседней ветке ещё как вызывает.

S>Я говорю о том, что предлагаемый вариант ролей не шибко помогает.


Согласен. Просто вся ветка перешла от обсуждения полезности «ролей», к обсуждению полезности абстракции моноида.

S>Рулится прямо сейчас:


Всё так.

S>
var m = new M();

S>С учётом того, что статические интерфейсы ты ничем не параметризуешь, дефолтного конструктора вполне достаточно.

Даже конструктор не нужен (его констрейнт и вызов), достаточно default(M) с констрейнтом struct. В той статье «Concept C#: Type Classes for the Masses» именно такой подход рассматривался.

S>Вся разница — код работает прямо сейчас, не дожидаясь C# 12.


Всё верно! (Только я в своих API предпочитаю по старинке протаскивать такие policies явно — более гибко. Но действительно, можно и не параметром метода, а параметром дженерика с самостоятельным инстанцированием через default(T).)

S>С моей точки зрения, для обобщённой операции сложения использовать оператор "+" — баловство.


Категорически согласен.