Size: a a a

ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)

2020 June 10

.

.tmp in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Переслано от .tmp
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
источник

VE

Vasiliy Efimov in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
худший подход евер
хотелось бы подробнее
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
.tmp
Переслано от .tmp
кросево
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
.tmp
Переслано от .tmp
оч круто
источник

.

.tmp in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
кросево
аж заскучал за своим балкончиком
источник

.

.tmp in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
грузинским
источник

a

aλeχknvl in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
я не вижу других вариантов пофиксить Seq[A] / Option
источник

ΛВ

Λнтон Войцишевский... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Я хз какой уровень постироении это был есчо
источник

a

aλeχknvl in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Seq же еще и мутабельный потенциально вроде
источник

a

aλeχknvl in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
т.е. Seq который используется для as :_* - суперкласс мутабельных `Seq`ов вроде
источник

VE

Vasiliy Efimov in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
aλeχknvl
Seq же еще и мутабельный потенциально вроде
c 2.13 нет
источник

VE

Vasiliy Efimov in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
val Seq = scala.collection.immutable.Seq
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
это реально так чел, дегус берет с тя бабки чтобы пилить либу которую он выкинет  в опсос
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
маркетинг делает все
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Vasiliy Efimov
хотелось бы подробнее
я на спидране показывал подход для простых типов

ну вот например на примере
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L111
есть примесь с инстансом для полу-стандартного типа

Она примешивается в компаньоны
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L107
И добавляется к следующим примесям
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L90
Всё более слабые предки получают инстансы более сильных.
Но амбигуйти нет, потому что компаньон указывает свой тип для результата
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L77
Получается, что из двух инстансов, когда компилятор его из-за проблем своих увидит в двух компаньонах - он выберет из более сильного компаньона, потому что там тип более точный.

Поэтому на самом деле, в котах можно легко сделать так, чтобы весь cats.instances не был нужен.
Потому что причина, по которой инстансы не запихали в компаньоны - амбигуйти, когда один инстанс в двух компаньонах
источник

ΛВ

Λнтон Войцишевский... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Понятно, будет Mappable и Foreachable, а все функторы -- контейнеры с ошибкой
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
я на спидране показывал подход для простых типов

ну вот например на примере
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L111
есть примесь с инстансом для полу-стандартного типа

Она примешивается в компаньоны
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L107
И добавляется к следующим примесям
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L90
Всё более слабые предки получают инстансы более сильных.
Но амбигуйти нет, потому что компаньон указывает свой тип для результата
https://github.com/TinkoffCreditSystems/tofu/blob/master/core/src/main/scala/tofu/Context.scala#L77
Получается, что из двух инстансов, когда компилятор его из-за проблем своих увидит в двух компаньонах - он выберет из более сильного компаньона, потому что там тип более точный.

Поэтому на самом деле, в котах можно легко сделать так, чтобы весь cats.instances не был нужен.
Потому что причина, по которой инстансы не запихали в компаньоны - амбигуйти, когда один инстанс в двух компаньонах
Это позволило бы импорты не писать, и соответственно не хавать ошибок, когда два импорта одно импортят
источник

a

aλeχknvl in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Applicative правильно именно с помощью зипа писать кстати
источник

a

aλeχknvl in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
с точки зрения педагогики и вообще
источник