Re[14]: IEquatable<T>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 14.02.17 16:27
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, samius, Вы писали:


V>>>Сам разве не обратил внимания, что между List<T> и ограничением IEquatable<T> нет никакой связи на уровне типов языка.

S>>А ты не обратил внимания, что между списком в Хаскеле и Eq a тоже нет никакой связи на уровне типов языка?

V>В Хаскеле эта связь есть через текущий контекст вычислений, когда над каждым типом может выводиться более одного ограничения.

V>В ФП другая техника, другие принципы декомпозиции.

V>>>"Пофигу", потому что ему хочется проигнорить вот этот "разрыв" в системе типов, из-за чего, собсно, и подключается рефлексия.

S>>Какая рефлексия в List<T>?

V>Рефлексия идёт везде, где в либах используется Comparer<T>.Default.

Если не нравится рефлексия, не используй либы, использующие Comparer<T>.Default. Кто заставляет? Задавай явно свой компарер.


S>>Тебе принципиально впендюривать IndexOf с генериккомпарером внутрь List<T>?


V>Не понял?

V>Это отказ от обсуждения систем типов и возможностей параметрического полиморфизма? ))
List<T> параметрически полиморфен. Что тут еще обсуждать? Но тебе,видимо уже не нужна работающая функция IndexOf с value-type компарером. Тебе IndexOf вкорячить в List<T>, но не добавить ограничение к типу T. Причем, чисто что бы пообсуждать. А мне достаточно внешней к List<T> функции IndexOf. И та нафиг не нужна на самом деле.

V>Ну вот представь, что рефлексия (т.е. хак системы типов) недоступна.

V>И сразу станет принципиально.
Представил. Ну да, ты ведь полагаешь что как только ты не указал компарер явно и он создался под капотом дядей, то ты обрел параметрический полиморфизм...
Ждем конкурирующие классификации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.