On Mon, Apr 7, 2008 at 4:50 AM, TSa <[EMAIL PROTECTED]> wrote: > HaloO, > > > Larry Wall wrote: > > > (@a X @b X @c).elems == @a.elems * @b.elems * @c.elems > > > > Sorry, I was aiming at defining a neutral element of the X > operator.
A neutral element for the cross operator seems weird if that is to be compared with 0 for addition 1 for multiplication because the basic assumption would be an element N such that X op N = X This would require that the operator with a neutral element should be a mapping like: op : D x D -> D which is not the case for the X operator X : Seq(D1) x Seq(D2) -> Seq( D1 x D2 ) At the other hand, any sequence with one only member would define a result @a x ($any) that would be kind of isomorphically equivalent to @a itself. But, apart from that, I don't get the value of defining such a neutral element for the cross operator. Adriano In cartesian products of sets this is achieved > by having a set that contains as sole member the empty tuple. > So how would that be written? (()) perhaps? Or (;)? This > would have (;).elems == 1 but (;),1,2 === (1,2). And it > would be considered true in boolean context I guess. A more > explicit notation might be () but .elems = 1. For anonymous > arrays we already have [()].elems == 1, or not? > > The above might be a bit subtle, though. OTOH, it could save > some surprises. > > > > > Regards, TSa. > -- > > The Angel of Geometry and the Devil of Algebra fight for the soul > of any mathematical being. -- Attributed to Hermann Weyl >