Size: a a a

Scala User Group

2020 March 15

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
Да, для всего
а как его наличие влияет на качество кода?
источник

AS

Artem Sokolov in Scala User Group
спасибо!
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλeχander Semenov
а как его наличие влияет на качество кода?
Ну вот вы подключились к СУБД, как вы зависимость от этого подключения выразите?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Дистейджем?
источник

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
Ну вот вы подключились к СУБД, как вы зависимость от этого подключения выразите?
не до конца понимаю, но в сервисе это будет
class MyService[F[_], DB[_]](myRepo: MyRepo[DB], transact: DB ~> F)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну видите, ваш MyService как нужно инстанциировать?
источник

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
Ну видите, ваш MyService как нужно инстанциировать?
через new 🤷‍♂️
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλeχander Semenov
через new 🤷‍♂️
Ну вот получается
что можно было бы сделать:

интерпретатор, которая говорит, что конструкции на языке MyService выражаются через языки...., включая язык MyRepo
все интерпретаторы - это правила деривации имплиситов, и могут безопасно иметь любые циклические зависимости и подключаться автоматически, не требуя от пользователя вашей реализации никаких особенных размышлений

Что вы сделали (и я раньше тоже делал) - функцию, сервис-хэндлер, которая генерирует пачку функций на базе других пачек функций, она требует ручного инстанциирования с определённым заранее порядком, или DI
источник

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
Ну вот получается
что можно было бы сделать:

интерпретатор, которая говорит, что конструкции на языке MyService выражаются через языки...., включая язык MyRepo
все интерпретаторы - это правила деривации имплиситов, и могут безопасно иметь любые циклические зависимости и подключаться автоматически, не требуя от пользователя вашей реализации никаких особенных размышлений

Что вы сделали (и я раньше тоже делал) - функцию, сервис-хэндлер, которая генерирует пачку функций на базе других пачек функций, она требует ручного инстанциирования с определённым заранее порядком, или DI
ну, оно работает, свайрить на краю мира все мне дистэйдж не нужен. Но не понял, при чем тут ридер
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλeχander Semenov
ну, оно работает, свайрить на краю мира все мне дистэйдж не нужен. Но не понял, при чем тут ридер
ну я же не говорю "ваш код будет хуже работать"
я говорю, "ваш код будет не столь высокого качества"(каким мог бы быть)

идея в том, что вы могли бы сложить ваши репозитории в контекст, после чего получить глобально доступный

implicit MyRepo[F], который просто доставал ваш заранее инициализируемый MyRepo[F] из контекста ридера
источник

Oℕ

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

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
ну я же не говорю "ваш код будет хуже работать"
я говорю, "ваш код будет не столь высокого качества"(каким мог бы быть)

идея в том, что вы могли бы сложить ваши репозитории в контекст, после чего получить глобально доступный

implicit MyRepo[F], который просто доставал ваш заранее инициализируемый MyRepo[F] из контекста ридера
А какой бенефит от этого? И что-то мне не кажется, что MyRepo должен быть имплиситным. Там же всякие монады, и вдруг - MyRepo.
источник

AS

Aλeχander Semenov in Scala User Group
Oleg ℕizhnik
таким образом на краю мира вам не нужно было бы инстанцировать вообще всё, а только то, что требует подключений, инициализации состояний, контроля ресурсов и вообще каких-то осмысленных действий, а не просто интерпретации
А есть пример такого приложения минимального?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλeχander Semenov
А какой бенефит от этого? И что-то мне не кажется, что MyRepo должен быть имплиситным. Там же всякие монады, и вдруг - MyRepo.
Ну почему Monad[F] более достойная имплисита, чем MyRepo[F] ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλeχander Semenov
А есть пример такого приложения минимального?
club-bot
источник

Oℕ

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

AS

Aλeχander Semenov 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
дайте пример, переделаем его на тофу
источник