Size: a a a

Scala User Group

2021 February 19

Oℕ

Oleg ℕizhnik in Scala User Group
Alex Sh
А как это использовать то?
def geoPos[T : * Contains Address](in: T) : GeoPos
источник

AS

Alex Sh in Scala User Group
Λнтон Войцишевский
@ClassyOptics
case class Foo(bar: Bar, baz: Bar)

val foo: Foo = ???
Foo.bar.set(anotherFoo)(foo)
А там есть type-class-ы, которые ведут себя как оптики итп?
источник

AS

Alex Sh in Scala User Group
Oleg ℕizhnik
def geoPos[T : * Contains Address](in: T) : GeoPos
Оооо!!! 😮
источник

Oℕ

Oleg ℕizhnik in Scala User Group
@ClassyOptics
case class AlexSh(
...,
address: Address,
...
)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
@Optics генерит то, что написал Антон, @ClassyOptics делает их имплиситными
в тофу это в частности используется, чтобы к кускам контекста получать доступ, апгрейдя WithContext, чтобы получить примерно как RIO подход в хаскеле
источник

AS

Alex Sh in Scala User Group
Oleg ℕizhnik
@Optics генерит то, что написал Антон, @ClassyOptics делает их имплиситными
в тофу это в частности используется, чтобы к кускам контекста получать доступ, апгрейдя WithContext, чтобы получить примерно как RIO подход в хаскеле
Есть какие-нть конкретные примеры как это исползуется?
Тесты, статьи, видяхи? А то боюсь навелосипедить, если честно.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Alex Sh
Есть какие-нть конкретные примеры как это исползуется?
Тесты, статьи, видяхи? А то боюсь навелосипедить, если честно.
а что ты хочешь сделать с ними?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Кажется даже в доках что-то есть
источник

ZM

ZLoyer Matveev in Scala User Group
Oleg ℕizhnik
Кажется даже в доках что-то есть
не, это как раз пропустили
источник

ZM

ZLoyer Matveev in Scala User Group
источник

ZM

ZLoyer Matveev in Scala User Group
ну т.е. понять можно, но не каждому легко и просто
источник

AS

Alex Sh in Scala User Group
Λнтон Войцишевский
а что ты хочешь сделать с ними?
Какой-нть кусок кода, который использует подход, описанный Олегом выше
> def geoPos[T : * Contains Address](in: T) : GeoPos
В прошлый раз моё погружение закончилось тем, что я начал сам type-class-ы придумывать, потому что не знал про Contains.
Понял, что делаю что-то не то, остановился, но потом в итоге забил совсем.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
https://docs.tofu.tf/docs/hascontext
ну здесь что-то есть, но примеры почему-то с ручным использованием
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
есть вот такое
источник

AS

Alex Sh in Scala User Group
Спасибо. 🙇
Надо будет посмотреть.
источник

YY

Yuriy Yarosh in Scala User Group
o/

Есть вопрос по SBT

Собираю кроссплатформенный проект и хочу указать зависимости через %%%

В итоге у меня есть

  lazy val slinky = Def.setting("me.shadaj" %%% "slinky-core" % SlinkyVersion) ::
   Def.setting("me.shadaj" %%% "slinky-web" % SlinkyVersion) ::
   Def.setting("me.shadaj" %%% "slinky-hot" % SlinkyVersion) ::
   Nil


Естественно не работает
libraryDependencies ++= Dependencies.all.map(_.value)


и отваливается с

java.lang.IllegalArgumentException: Could not find proxy for x$1: sbt.internal.util.Init#Initialize in List(value x$1, value $anonfun, method $anonfun$testier$4, method testier$lzycompute, object $4d79089bc49d6050084f, package <empty>, package <root>) (currentOwner= method testier$lzycompute )
 at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:317)
 at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:322)
 at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:322)
 at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:322)
источник

YY

Yuriy Yarosh in Scala User Group
Как это лечить ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
зачем Def.setting
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и вот эта вся :: Nil
источник