(
F[_] : Monad
, у тебя это может быть что угодно, ты не накладываешь ограничений и вместе с тем знаешь достаточно лишь настолько, чтобы мочь композировать эф-дырки, которые ещё и хер проссышь, откуда берутся. С помощью мтля (или чего-нибудь ещё), можно в типах зафиксировать то, что функция абстрактно умеет делать и прокинуть ей это все из точки входа без всяких диаев