т.е. когда ты говоришь условно user.friends[].friends[] тебе не нужно вообще ничего знать про друзей юзера, ты можешь сразу быстро сделать это как reduce морфизма
Haxl решает проблему того, что явно задаёт зависимости между запросами, чтобы можно было понять в рамках eDSL без сложной магии, где у тебя независимые запросы, а где нет.
А уж оптимизацию получившегося графа вызовов можно потом поверх этого свободного аппликатива навернуть