The issue is the following, with a dumb function with (4) arguments of (4) different heads (for each head is always no grater than one arguments):
func[x_a,y_b,z_c,w_d] := Print[x,y,z,w]
If I type func[a[1],b[2],c[3],d[4]], it returns as its correct a[1]b[2]c[3]d[4].
But if I forget the order of I should type de arguments, It doesn't works. So, I want to my function func still works even if I send the exchanged arguments, a permutation of them. In spite of, coding all posible order for arguments in the func.
OrderlessPatternSequence(in version 10.1). `func[x_a, OrderlessPatternSequence[y_b, z_c, w_d]] := Print[x, y, z, w] func[a[1], b[2], d[3], c[4]]a[1]b[2]c[4]d[3]`
– Daniel Lichtblau May 13 '15 at 19:09