Dr. Friedrich
А в эфшарпе мне для всех использований тайпклассов хотелось именно чужие тайпклассы поимплементить для чужих либов
Nikolay
Doge
Nikolay
Почему
Dr. Friedrich
Dr. Friedrich
Dr. Friedrich
Если какой-то чужой тип объявлен как моноид, а я делаю для него newtype — мой newtype же перестанет быть моноидом?
Критерий
да, но ты можешь сделать deriving Monoid
Dr. Friedrich
Dr. Friedrich
Тогда лан.
Критерий
и via добавить
Dr. Friedrich
Кажись, в расте это просрали, но я не уверен.
Doge
Dr. Friedrich
Мне растоманы поясняли, что так нельзя сделать почему-то.
Dr. Friedrich
Я над ними насмехался, но они не поняли.
Doge
Dr. Friedrich
А почему да?
Ну потому что можно реализовать Select для чужого типа
Dr. Friedrich
Я пояснил почему да, теперь ты поясни почему нет.
Dr. Friedrich
Ну, я сильно слукавил, разумеется. Но иначе бы не было интересно, согласись.
Dr. Friedrich
Ayrat
Dr. Friedrich
Я бы так назвал только те кейсы, поверх которых можно написать хоть на вид полиморфный код
Ayrat
Как и форЫч, и узинг и эвэйт
Doge
Dr. Friedrich
Dr. Friedrich
Ты снова врёшь.
Ayrat
Все врут.
Doge
Ты врёшь.
Нет, тебе полиморфность на внешний вид не даёт этот код переиспользовать
Dr. Friedrich
Doge
Собственно нафига она тогда нужна
Dr. Friedrich
> на вид полиморфный код не является полиморфным фактически.
Ayrat
Вот ты врешь, что тебя зовут Фридрих. А он врёт что выглядит как собака
Dr. Friedrich
Вот это утверждение ложно. Строго логически.
Dr. Friedrich
Потому что любой фактически полиморфный код является также полиморфным на вид.
Doge
Dr. Friedrich
Не всякий на вид полиморфный код является истинно полиморфным, да.
Dr. Friedrich
Но я уже придумал пример для C#, как эту конкретную полиморфность можно использовать по факту.
Критерий
темплэйты в с++ это полиморфизм?
Dr. Friedrich
Так что ты мне наврал сперва на вид, а потом и фактически.
Nikolay
И тогда любой класс будет тайпклассом
Dr. Friedrich
Dr. Friedrich
Dr. Friedrich
Но на самом деле с оговорками это позволит писать полиморфный код поверх любого класса, ла.
Dr. Friedrich
Dr. Friedrich
Смотри
Dr. Friedrich
Два слова: shared library
Dr. Friedrich
Дальше ты меня обвиняешь в читерстве, а я смеюсь.
Doge
Dr. Friedrich
У меня на диске есть .cs-файл, в нём написан метод
Dr. Friedrich
Этот метод я могу заставить выполняться в разных интересных условиях для разных типов
Dr. Friedrich
В общем-то весь код в этом методе уже автоматически полиморфный
Dr. Friedrich
Вообще весь
Dr. Friedrich
Да, любой класс в сишарпе — тайпкласс
Dr. Friedrich
И вообще что угодно тайпкласс
Dr. Friedrich
Критерий
а где полиморфизм?
Критерий
ну чтоб разные селекты использовать
Dr. Friedrich
А где полиморфизм у хаскельного sum a b = a + b?
Dr. Friedrich
Вот и тут там же полиморфизм
Критерий
Num t => t -> t -> t
Dr. Friedrich
Инстанцируешь разными типами
Dr. Friedrich
Критерий