Unintuitive meaning of some recursive type aliases

Maybe we should move away from the alias/match divide and to a non-recursive/recursive one ?

That way the compiler could also be reckless with non-recursive match types, as those are safe

It would also force us to have a really strong cycle detection, which doesn’t seem to be the case currently
Or a special modifier like rec type or nonrec type so that users manually do the cycle detection