Расскажи свою историю, когда тебе понадобилось на практике применять "parametric reasoning" на уровне эффектов?
везде в рабочем проекте. Класс, который реализует какую-то там логику и достает данные из бд и потом куда-то отправляет, не имеет в баундах ничего выше монады и я точно знаю, что он может получать нужные данные только из репозитория, который в зависимостях.
class SomeDomainService[F[_]: Monad](repo: SomeRepoAlg[F], sender: SomeSenderAlg[F])
можно точно сказать, что класс максимум что сделает — возьмет данные из репо (репо и сендеры — такие же языки как и монадка в баунде, можно было бы туда же, но мы их явно передаем) и отправит сендером куда-то