Size: a a a

Scala User Group

2020 May 22

D

Daniel in Scala User Group
Oleg ℕizhnik
Да, где-то в книгах по коку рассказывают как доказать свойства своего собственного логического языка, который можно использовать для своей собственной реализации скалы
источник

IP

Ilya Petrov in Scala User Group
Если при использовании ZIO запихивать при создании зависимости в сервис то насколько норм такой код ?

for {
 env<- ZIO.access[MySeviceDependencies](d=>d)
} yield new MyService(env)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya Petrov
Если при использовании ZIO запихивать при создании зависимости в сервис то насколько норм такой код ?

for {
 env<- ZIO.access[MySeviceDependencies](d=>d)
} yield new MyService(env)
ну так се
источник

Oℕ

Oleg ℕizhnik in Scala User Group
type MySeviceDependencies = Clock with Foo with Bar
?
источник

IP

Ilya Petrov in Scala User Group
Oleg ℕizhnik
ну так се
А как лучше? Через flatmap? + можно ли избавиться от d=>d ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нерелевантно, но там есть метод ZIO.environment
источник

IP

Ilya Petrov in Scala User Group
Oleg ℕizhnik
type MySeviceDependencies = Clock with Foo with Bar
?
Да
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya Petrov
А как лучше? Через flatmap? + можно ли избавиться от d=>d ?
не, можно схавать весь энв целиком, но я бы написал
yield new MyService(
foo = env.get[Foo],
bar = env.get[Bar],
...
)
источник

IP

Ilya Petrov in Scala User Group
Oleg ℕizhnik
нерелевантно, но там есть метод ZIO.environment
Спасиб, стыдно что не нашёл, буду исправляться
источник

IP

Ilya Petrov in Scala User Group
Oleg ℕizhnik
не, можно схавать весь энв целиком, но я бы написал
yield new MyService(
foo = env.get[Foo],
bar = env.get[Bar],
...
)
Но тут вопрос в том как это будет использоваться, если внутренняя реализация выражена через функцию, возвращающую ZIO[MySeviceDependencies,...], то проще одним махом сделать provide от одного поля типа MySeviceDependencies. Если же там в разных кусках используются разные части MySeviceDependencies  то лучше передавать по кусочкам. Я правильно понимаю? Или в любом случае лучше расщеплять на составляющие?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ilya Petrov
Но тут вопрос в том как это будет использоваться, если внутренняя реализация выражена через функцию, возвращающую ZIO[MySeviceDependencies,...], то проще одним махом сделать provide от одного поля типа MySeviceDependencies. Если же там в разных кусках используются разные части MySeviceDependencies  то лучше передавать по кусочкам. Я правильно понимаю? Или в любом случае лучше расщеплять на составляющие?
не понял про внутренюю реализацию
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нужен код
источник

IP

Ilya Petrov in Scala User Group
источник

A

Alex in Scala User Group
Pavel
а http4s имеет websocket клиент?
если jdk11+ то можно посмотреть на https://github.com/http4s/http4s-jdk-http-client
источник

P

Pavel in Scala User Group
Alex
если jdk11+ то можно посмотреть на https://github.com/http4s/http4s-jdk-http-client
спасибо
источник

P

Python in Scala User Group
Допустим у меня есть такой код:
trait Service[F[_]]
trait Context[F[_]]
object Service {
 def of[F[_]](globalThing: GlobalThing[F]): (Service[F], Context[F])
}
То есть на каждый новый экземпляр Service[F] я хочу отдавать какой-то интерфейс, который относится к нему, но совершенно необязательно имеет подмножество его фукнциональнсости (напирмер Context[F] умеет удалять Service[F] из глобального хранилища в GlobalThing[F], про которое Service[F] сам ничего не знает).

Есть ли какие-то готовые способы это делать кроме как тупо возвращать два типа? Какие-то идеи у меня есть, но не хочу изобрести велосипед.
источник

NV

Nikita Vilunov in Scala User Group
Python
Допустим у меня есть такой код:
trait Service[F[_]]
trait Context[F[_]]
object Service {
 def of[F[_]](globalThing: GlobalThing[F]): (Service[F], Context[F])
}
То есть на каждый новый экземпляр Service[F] я хочу отдавать какой-то интерфейс, который относится к нему, но совершенно необязательно имеет подмножество его фукнциональнсости (напирмер Context[F] умеет удалять Service[F] из глобального хранилища в GlobalThing[F], про которое Service[F] сам ничего не знает).

Есть ли какие-то готовые способы это делать кроме как тупо возвращать два типа? Какие-то идеи у меня есть, но не хочу изобрести велосипед.
Возвращать Service[F] with Context[F]?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita Vilunov
Возвращать Service[F] with Context[F]?
чую, один контекст может идти в паре с разными сервисами
источник

P

Python in Scala User Group
Nikita Vilunov
Возвращать Service[F] with Context[F]?
А он не наследник. Там в Context[F] может быть больше или другие методы.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Python
А он не наследник. Там в Context[F] может быть больше или другие методы.
Никита имеет в виду возвращать один объект, который оба имплементит
источник