Dr. Friedrich
Для семейства типов MyList
Dr. Friedrich
в сигнатуре
Ну и у меня в сигнатуре
Критерий
Для семейства типов MyList
селект выбран статически
Критерий
ты можешь накрутить на него virtual
Dr. Friedrich
У меня написан метод, который работает для семейства типов `MyList`
Dr. Friedrich
Для любого типа с таким названием он будет работать
Критерий
но возвращаемый тип у тебя будет MyList
Doge
Для семейства типов MyList
Так нужен был метод, который работает для любого типа, который удовлетворяет требованием тот, чтобы с ним может было LINQ синтаксис использовать
Критерий
што
Критерий
возвращаемый тип селекта
Критерий
Для любого типа с таким названием он будет работать
т.е. подразумевается иметь много типов с таким названием? как интересно
Ayrat
Ну тоже есть можно иметь тайпклассы и не иметь хкт
Dr. Friedrich
Будет работать для любого типа, у которого есть метод Select
Ayrat
Да, удобнее вместе, но необязательно
Dr. Friedrich
Правда, инстанцировать этот метод типом нужно в интересном виде
Dr. Friedrich
Но работает абсолютно для любых типов
Ayrat
где хкт?
Ну ты говоришь что надо писать то же самое для многих классов. Ну да надо
Ayrat
Но от этого функциональность тайпкласса не станет меньше
Dr. Friedrich
IEnumerable<string> Foo() { var argument = MyList.MyArgument; return from x in argument select x.ToString(); }
Даю хинт, чуваки: можно этот код из shared project включить в несколько нормальных проектов, в которых MyList резолвится по-разному.
Nikolay
Развёл срач и убежал
Критерий
блджад. я не понимаю. есть метод void Foo(MyList x), в котором делается from .. in .. where .. select. как мне использовать его для нескольких разных типов?
Dr. Friedrich
И получить инстанциацию любым нужным типом
Nikolay
Мир, труд, класс
Doge
IEnumerable<string> Foo() { var argument = MyList.MyArgument; return from x in argument select x.ToString(); }
Ну не, у тебя возвращаемое значение IEnumerable, а селект у любого типа, который его поддерживает, не обязан возвращать IEnumerable.
Dr. Friedrich
Который суть что угодно
Dr. Friedrich
Ну, с добавлением типа в сигнатуру действительно сложновато идёт, в том числе потому, что вы сопротивляетесь
Doge
Я могу написать MyList
Нет, важно, чтобы оно работало для любого типа, который будет передан в метод
Критерий
Два слова: shared library
расшаренный код, ясно. мономорфизация, как в с++
Dr. Friedrich
Но не было требования чтоб типы были в сигнатуре
Dr. Friedrich
Было требование чтоб был полиморфный код, который с любым типом работает
Doge
Но не было требования чтоб типы были в сигнатуре
Ну если скатываться в софистику, то можно проще.
Dr. Friedrich
(ну и, предположительно, чтоб его можно было инстанцировать с несколькими типами в одной программе)
Dr. Friedrich
Я сделал.
Dr. Friedrich
В сигнатуру с трудом такие трюки пролезают, но больше потому, что вы рили сопротивляетесь
Doge
Было требование чтоб был полиморфный код, который с любым типом работает
Речь шла про метод, ты сделал метод и дополнительный класс.
Dr. Friedrich
Если б вас устроил MyList в сигнатуре, то всё было бы хорошо.
Dr. Friedrich
Его делает вызыватель.
Dr. Friedrich
Критерий
полиморфизм уровня /b/
Doge
Но имхо ты уже доебаться решил, сорян.
Так ты начал с софистики, потому что это нифига не юзабельный способ
Dr. Friedrich
Я тебе и на хаскеле щас скажу — сделай метод чтоб работал для любых классов с функцией foo. Ты сделаешь тайпкласс с этой функцией, а я скажу что просил метод но без тайпкласса
Критерий
> метод > хаскел > методы это функции классов okay
Dr. Friedrich
Можно и посмешнее на локах чего-нибудь изобрести
Dr. Friedrich
Чтобы код по-разному работал в зависимости от того, в проект с какой реализацией Monitor.TryEnter его включили
Doge
Мне кажется мы все же говорим про то, что можно в реальности unironically использовать.
Dr. Friedrich
дактайпинг vs тайпкласс
Нету разницы-то. Тайпкласс — это просто формализованный дактайпинг
Критерий
это не дактайпинг
Dr. Friedrich
В чём разница?
Критерий
номинативно вс структурно
Dr. Friedrich
Да, ок, поэтому я говорю «формализованный»
Dr. Friedrich
На самом-то деле нету разницы, вы ж понимаете?
Критерий
как формализация превращает структурную типизацию в номинативную?
Dr. Friedrich
Можно просто считать, что названия методов, которые имеет тайпкласс, специальным образом поманглены
Dr. Friedrich
И поэтому не совпадают в разных тайпклассах
Doge
На самом-то деле нету разницы, вы ж понимаете?
Нет, формализованный дактайпинг - это srtp
Критерий
формализацию плз, с пэйпером :3
Dr. Friedrich
Опять меня послали нахер.
Критерий
ну там семантику..
Dr. Friedrich
Нет, спасибо, сам иди.
Doge
Вот как я описал выше.
А тайпклассы - это номинативная хрень. Ты не можешь её как дактайпинг использовать, потому что тебе надо объявлять, что данный тип имеет инстанс тайпкласса. Вот если бы не надо было, то да это был бы дактайпинг
Dr. Friedrich
this
Пейпер на бочку.
Dr. Friedrich
НЕМЕДЛЕННО
Dr. Friedrich
На каждое слово
Dr. Friedrich
По пейперу
Критерий
ща, пишу, падажжи
Dr. Friedrich
Но, если серьёзно, то я действительно не понял, в чём разница между тайпклассами и дактайпингом