Здравствуйте, 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>И сразу станет принципиально.
Представил. Ну да, ты ведь полагаешь что как только ты не указал компарер явно и он создался под капотом дядей, то ты обрел параметрический полиморфизм...
Ждем конкурирующие классификации.