стороны, т.к. возможно подтупливаю. ) Контекст создается во время веб запроса, то есть при старте аппа его нету. Должен ли тогда быть тип контекста Option[Ctx] или каким-то ADT? Но тогда мне в веб ресурсе нужен F WithLocal Option[Ctx]. Это ок. Но сервис слою нужен F WithContext Ctx, как мне к нему прийти из F WithLocal Option[Ctx]?
Ну ты собственно и подошёл к той проблеме, по которой у большинства инициализирующих что-то абстракций стоит в результате I[Foo[F]] А также то, зачем вообще нужен Unlift приоритетно
Т.е. идея в том, что ты инициализируешь приложение в каком-то RIO[SystemEnv, A] \ Task[A]\ IO[A] А запускаешь в RIO[SystemEnv with AppEnv, A] \ Env[MyContext, A] \ ReaderT[IO, MyContext, A]
Именно поэтому MakeRef, MakeMVar, Logs и т.п. позволяют тебе делать I[Foo[F]] где I - инициализирующий эффект, в котором контекста нет RIO[SystemEnv, A] \ Task[A]\ IO[A] а F - контекстный эффект, которому нужен контекст для работы RIO[SystemEnv with AppEnv, A] \ Env[MyContext, A] \ ReaderT[IO, MyContext, A]
Обсуждают сегодня