svn log, speaking on larry's behalf (>):
+The string concatenating form is: + + <a b> X~X <1 2> # 'a1', 'a2', 'b1', 'b2' + +The C<X~X> operator desugars to something like: + + [~]«( <a b> X <1 2> ) # 'a1', 'a2', 'b1', 'b2'
...and later...
+The C<X> variant crosses the arrays but concatenates strings: + + <a b> X <1 2> + +produces + + 'a1', 'a2', 'b1', 'b2'
If the C<X> variant already concatenates strings, why is it done explicitly in the desugaring of C<X~X>? Probably not what you intended. Kindly, // masak