Size: a a a

F# Flood: ПДД made functional, making illegal state INGIBDDdale

2020 May 02

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Dr. Friedrich von Never
Кажись, я не могу чужой тайпкласс реализовать для чужого типа
Да, это по логичным причинам получается.

Потому что иначе придется обязательно использовать импорты для инстансов, и мы получим скаловские имплиситы
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
Ну то есть старый затирается в текущем скоупе
Нет
источник

O

Orbarax in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Dr. Friedrich von Never
Наследование и есть вариант сабтайпинга.
да как это, можно наследоваться без сабтайпинга (теоретически)
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Да, это по логичным причинам получается.

Потому что иначе придется обязательно использовать импорты для инстансов, и мы получим скаловские имплиситы
Да, спасибо, что послал меня нахер, я уже понял.
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Логичные причины.
источник

АВ

Андрей Вилинский... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
Ну то есть старый затирается в текущем скоупе
в том же модуле нельзя... наверное
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
Ну то есть старый затирается в текущем скоупе
Нет, ничего не затирается.

Ты создаешь ньютайп и для него делаешь нужный инстанс.
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Dr. Friedrich von Never
Да, спасибо, что послал меня нахер, я уже понял.
Проблема будет в том, что тогда у тебя может возникнуть ситуация, когда в двух либах для одного и того же типа сделали две разные реализации одного и того же тайпкласса
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Проблема будет в том, что тогда у тебя может возникнуть ситуация, когда в двух либах для одного и того же типа сделали две разные реализации одного и того же тайпкласса
Я не понимаю, хоть убей, почему это проблема.
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ну реализовали, ну и чо?
источник

O

Orbarax in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
Ну то есть старый затирается в текущем скоупе
чо за старый? ты делаешь zero-cost тип-врапер, по сути, для которого можешь свои инстансы определять, базовый тип это никак не аффектает
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Там, где мне это важно, я же могу конфликт разрешить.
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Явно указать, чо я импортирую, ну или явно передать тайп аргументом.
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
someOtherLibrary.MethodCall<TypeFromLibrary1, TypeClassInstanceFromLibrary2>()
источник

АВ

Андрей Вилинский... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Dr. Friedrich von Never
Я не понимаю, хоть убей, почему это проблема.
ну пушто компилер может не понять которую из реализаций "наследовать", вдруг они разные
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Dr. Friedrich von Never
Я не понимаю, хоть убей, почему это проблема.
Проблема в том, что тебе чтобы использовать инстанс тайпкласса не нужны его импорты.

А в данном случае придется эти импорты указывать.

В хаскеле и расте решили что возможность писать всегда без импортов важнее.

В скале решили, что важнее возможность иметь несколько реализаций и там надо импортировать тайпклассы
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
В сишарпе сейчас эта проблема есть (можно сделать несколько одноимённых экстеншенов для одного и того же типа), прекрасно решается юзингами.
источник

O

Orbarax in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Андрей Вилинский
ну пушто компилер может не понять которую из реализаций "наследовать", вдруг они разные
он ведь дрищет кровью при этом из-за undecidable instance?
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Андрей Вилинский
ну пушто компилер может не понять которую из реализаций "наследовать", вдруг они разные
Разные, ок. Пусть у меня спросит. Я рили не понимаю, в чём проблема.
источник

Dv

Dr. Friedrich von Ne... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Проблема в том, что тебе чтобы использовать инстанс тайпкласса не нужны его импорты.

А в данном случае придется эти импорты указывать.

В хаскеле и расте решили что возможность писать всегда без импортов важнее.

В скале решили, что важнее возможность иметь несколько реализаций и там надо импортировать тайпклассы
В хаскеле, кажется, просто поленились сделать отдельный синтакс для такой фундаментальной проблемы.
источник