Size: a a a

Scala User Group

2020 March 12

ЮБ

Юрий Бадальянц in Scala User Group
Ща попробую что-нибудь сообразить
источник

ЮБ

Юрий Бадальянц in Scala User Group
и если получится, покажу что имел в виду
источник

ЮБ

Юрий Бадальянц in Scala User Group
Хотя может и подходит
источник

ЮБ

Юрий Бадальянц in Scala User Group
Не, не подходит
источник

ЮБ

Юрий Бадальянц in Scala User Group
@odomontois У меня есть джавный процесс Process. Он создаётся через new и запускается через start. Всё это с сайд эффектами. И у него после создания есть ещё методы типа onError и close. И я хочу получить примерно такое (псевдокод):
StartedDaemon[F[_], E, Process] {
 def get: Process
 def stop: F[Unit]
 def error: F[Option[E]]
}
Это частично похоже на Daemon, но меня интересует абстракция для уже запущенного процесса. А его создание — это просто отдельный эффект.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
да - это Daemon
источник

ЮБ

Юрий Бадальянц in Scala User Group
Но как мне достать инстанс процесса? Через join? И как мне тогда такой демон сконструировать?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
что такое инстанс процесса?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
а жавовый
источник

ЮБ

Юрий Бадальянц in Scala User Group
да
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну если это обёртка над конкретной либой, нужно конкретную обёртку делать
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Я не вижу, как это корректно абстрагировать в общем случае
источник

ЮБ

Юрий Бадальянц in Scala User Group
join на демоне вернёт F[A], а мне нужно над конкретным A всю вот эту машинерию сделать
источник

Oℕ

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

ЮБ

Юрий Бадальянц in Scala User Group
Ну пускай вот так будет:
trait StartedDaemon[F[_], E, A] {
 def get: A
 def stop: F[Unit]
 def error: F[Option[E]]
}
источник

ЮБ

Юрий Бадальянц in Scala User Group
Вот A — это джавовый процесс. Он где-то там в фоне чёта делает, у него есть какие-то свои состояния, есть колбэки.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
это просто (A, Daemon[F, E Unit])
источник

Oℕ

Oleg ℕizhnik in Scala User Group
я не понимаю профита от того, что A находится внутри StartedDaemon, какие функции это позволяет реализовать?
источник

ЮБ

Юрий Бадальянц in Scala User Group
Подёргать его методы
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Подёргать его методы
Ну а если там будет A, B
источник