> But for simple array this code is not good. `[X, Y].hashOf() == [Y, X].hashOf()`.

Good point, but adding two numbers is commutative too ;-).
Note that this is only a problem of the `TypeInfo.toHash` function.
Maybe hashing should be done through an output range callback similar to `toString`, i.e.
`void toHash(void delegate(ubyte[]) dg = null)` or so.