Delicate solve order
Should we successfully infer a type for f:
f x = [h x, [x]]
assuming h :: forall b. F b -> b?
Assuming (x::alpha) and we instantiate h at beta, we get the constraints
(1) beta ~ [alpha] from the list [h x, [x]]
(2) alpha ~ F beta from the call of h
Now if we happen to unify the constraint (1) first, beta := [alpha], then we successfully infer
f :: forall a. (a ~ F [a]) => a -> [[a]]
But if we unify the constraint (2) first, alpha := F beta, we get
f :: forall b. (b ~ [F b]) => F b -> [[F b]]
which looks ambiguous. It isn't ambiguous, in fact, but the solver has to work hard to prove it. It actually succeeds here, but in the more complicated example in indexed-types/should_compile/IndTypesPerfMerge, it didn't. There the function merge has (a slightly more complicated form of) this delicately-balanced situation.
But see Note [Orientation of equalities with fmvs] in TcFlatten for why we don't defer solving (2).