Size: a a a

ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)

2020 March 05

KC

Kain Crow in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Раз уж Олег просит
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
То
ReaderT[F[_], Baz, *] будет автоматически иметь HasContext[..., Bar] наряду с HasContext[..., Bar] и HasContext[..., Foo]
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
как пример
источник

λ

λоλторт in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Oleg ℕizhnik
челы
@ClassyOptics
case class Foo(
  bar: Bar
)

@ClassyOptics
case class Baz(
  @promote foo : Foo
)


какое лучшее имя для @promote выбрать?
А что оно делает? Оптику bar на типе Baz?
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
λоλторт
А что оно делает? Оптику bar на типе Baz?
класси оптику
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
имплисит
источник

λ

λоλторт in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
flatten
источник

DM

Daniel Matveev in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Oleg ℕizhnik
То
ReaderT[F[_], Baz, *] будет автоматически иметь HasContext[..., Bar] наряду с HasContext[..., Bar] и HasContext[..., Foo]
о, круто, я извращался имплиситом

@sdelat_context_great или @sdelat_zaipis
источник

λ

λоλторт in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Oleg ℕizhnik
То
ReaderT[F[_], Baz, *] будет автоматически иметь HasContext[..., Bar] наряду с HasContext[..., Bar] и HasContext[..., Foo]
о, ты ether для скалы изобретаешь?
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
λоλторт
о, ты ether для скалы изобретаешь?
ну почти, только получше
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
для скалы не нужно эзера т.е. Constraint == Type
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Поэтому мне не нужно ссылаться на HasContext[F, Foo[F]] я могу вывести из него автоматически просто Foo[F]
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Если Foo достаточно хорош
источник

λ

λоλторт in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
яннп
источник

R

RattenKonig 🍄🌹 in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Oleg ℕizhnik
челы
@ClassyOptics
case class Foo(
  bar: Bar
)

@ClassyOptics
case class Baz(
  @promote foo : Foo
)


какое лучшее имя для @promote выбрать?
inject? No jokes
источник

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

AK

Anton Kosarev in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Oleg ℕizhnik
челы
@ClassyOptics
case class Foo(
  bar: Bar
)

@ClassyOptics
case class Baz(
  @promote foo : Foo
)


какое лучшее имя для @promote выбрать?
как же прекрасна джава 14
источник

D

Deλ✨ in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
Anton Kosarev
как же прекрасна джава 14
добавят тайпклассы потом и скала не нужна будет
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
trait Foo[F]
  def foo(x: Int): F[String]

given Embed[Foo]
  def embed[F[_]: FlatMap](f: F[Foo[F]]): Foo[F] = new {
      def foo(x:  Int) = f.flatMap(_.foo(x))
  }

given [F[_]] Foo[F] when (ctx: HasContext[F, Foo[F]] = Embed[F].embed(ctx.context)
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (как мы разрешаем котикам срать)
а понятно, спасибо
источник