Я думал, что хорошо бы заэмбедить:
trait Foo[F[_]] { def smg: F[Unit] }
trait Bar[F[_]] { def foo: F[Foo[F]] }
Ну, понятно, что ничего хорошего.
Кстати, новая версия деривации ведёт себя как кототаглесс.
Она будет выводит методы не только если в результате стоит F[...], но и если в результате стоит
Something[F, ...], где Something [*[_],...] имеет соответствующий инстанс