допустим в тестах, я знаю, что F у меня IO/SyncIO.
Чтобы получить результат из get5 мне нужно написать
get5[IO].unsafeRunSync
И вот я хочу написать утилитарную функцию getIO, чтобы более коротко писать
getIO(get5)
Но оно не компилится.
В реальном примере я словил такую ошибку
Error:(22, 23) diverging implicit expansion for type cats.effect.Sync[F]
starting with method catsKleisliSync in object Sync
sync(Address.Id.random)
Т.е. имплиситы искались на Sync, но не на SyncIO. В скасти другая ошибка. Но думаю, что причина одна.
Можно ли как-то написать get так, чтобы не указывать внутри тайп-параметры?
в скасти та же ошибка, если ты укажешь getIO[Int]… . вот так будет работать - println(getIO[Int](get5[IO])) , дальше можешь поразмышлять почему)
Обсуждают сегодня