короче, если обобщить, имплисит капабилитис оч легко объявлять, использовать и композить выражения с их использованием, но они не дают всяких там сткксейфти, асинхронности, поэтому хорошо быдо бы если бы пользовались чем-то вроде
(CanAuthorize, CanThrow[Err], CanKafla) ?=> IO[A]
тут, правда получаем, что теперь привязаны к IO её капабилитис встроенные уже нельзя вытащить и более простой код нельзя композить без лифтинга в IO, поэтому, наверное было бы хорошо, если бы кто-то придумал паттерн вроде
[F[_]] => (CanAuthorize[F], CanThrow[F, Err], CanKafka[F]) ?=> F[A]
не знаю, как такое называется, но я бы такое поюзал