Size: a a a

Scala User Group

2020 May 14

IL

Ivan Lopatin in Scala User Group
Можно ли вместо
implicit evidence: A <:< B
использовать
implicit evidence: A => B, есть ли принципиальное различие, если A должен быть подтипом B?

Идея предлагает автоматически заменить view bound <% на второй вариант.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
view bounds устарели и имплиситные функции лучше никогда не использовать
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Лучше использовать A Extract B
источник

IL

Ivan Lopatin in Scala User Group
Oleg ℕizhnik
Лучше использовать A Extract B
Extract - это что?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

ЮБ

Юрий Бадальянц... in Scala User Group
тончайшая реклама
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Не, я просто описываю свой подход
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Не обязательно тофу
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Можно свой какой-то тайпкласс написать вместо фунции
источник

λƒ

λesha ƒomkin in Scala User Group
λoλegΥch
"named type arguments look dead for now" %(
Скала 3 не нужна
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Да я не осуждаю
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Просто тофу выводится макросом для полей кейскласса и чуть приятнее использовать из-за этого
источник

D

Deλ✨ in Scala User Group
λesha ƒomkin
Скала 3 не нужна
эх вот и раскол наметился
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Но есть такая штука, что в оптиках есть по сути два типа, эквивалентных функции. Этот и Upcast
Можно сделать какой-то общий, хз, нужно ли
источник

BR

Bogdan Rybalka in Scala User Group
Смотрел интервью @odomontois у айтибороды. Не совсем понял, почему стирание типов в рантайме в Java улучшает логические качества програм в сравнении с, например, C# ?  Кто-то может чуть более подробно сказать об этом ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Bogdan Rybalka
Смотрел интервью @odomontois у айтибороды. Не совсем понял, почему стирание типов в рантайме в Java улучшает логические качества програм в сравнении с, например, C# ?  Кто-то может чуть более подробно сказать об этом ?
[IЯ сказал, что стирание типов позволяет сохранить чуть лучшие логические качества.
Есть хороший ответ здесь
https://stackoverflow.com/a/21843984

Но в принципе "стирание" не только для типов, а для любых параметров необходимое условие для достижение parametricity
https://en.wikipedia.org/wiki/Parametricity
В idris 2, к примеру, вы можете разделять обычные аргументы и "стираемые" с помощью специальной модальности 0 https://idris2.readthedocs.io/en/latest/tutorial/multiplicities.html

Дополнительно важно упомянуть, что продвинутые особенности системы типов вроде higher-kinded-types  гораздо сложнее реализовать, если рантайм не предполагает стирания
https://github.com/dotnet/roslyn/issues/2212
источник

BR

Bogdan Rybalka in Scala User Group
Несмотря на то что, в Java нет доступа в рантайме к генерик типам, все еще есть .getClass который также лишает возможности reasoning-а. В том же шарпе также нет возможности ризонинга, но зато такое List<Person> ps = new ArrayList<>();
List pps = ps;
pps.add(
new Car());
отловилось бы сразу, пусть и в рантайме. Вообщем-то понятно, что если рефлексии нет типы в ранайте не нужны. Но в конкретном примере с Java выгода не совсем ясна
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Bogdan Rybalka
Несмотря на то что, в Java нет доступа в рантайме к генерик типам, все еще есть .getClass который также лишает возможности reasoning-а. В том же шарпе также нет возможности ризонинга, но зато такое List<Person> ps = new ArrayList<>();
List pps = ps;
pps.add(
new Car());
отловилось бы сразу, пусть и в рантайме. Вообщем-то понятно, что если рефлексии нет типы в ранайте не нужны. Но в конкретном примере с Java выгода не совсем ясна
Я совершенно согласен с этим, в Java  не только getClass, но и вообще все методы Object мешают этому подходу
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Однако, основной посыл был, что "стирание способствует", и если рантайм платформа не стирает типы, то на ней вообще невозможно реализовать адекватного ризонинга
источник

BR

Bogdan Rybalka in Scala User Group
Понял, имеет смысл)
источник