- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Thu, 14 Mar 2024 09:06:04 -0700
- To: Norm Tovey-Walsh <norm@saxonica.com>
- Cc: "public-xslt-40@w3.org" <public-xslt-40@w3.org>
- Message-ID: <CAK4KnZcZmFZmpXyts_a4QRn7Wj_-gQZuAMsJLTgoujEeNJSnsg@mail.gmail.com>
> > For a simplified example, revert("abc") would produce "zyx" . This is doable and really valuable. > > In what sense is “zyx” the complement of “abc”? Over what set of codepoints and in what collation? > > I am very skeptical that such a function is well defined across all collations and will always produce a single, correct result in all cases. > > Can you provide a detailed description of how this would work? Yes, as Michael Kay already explained, this is doable if either: the "biggest" symbol in the collation is not used (which btw happens in some collations, for example the biggest symbol in the English(American) collation is 0xFE) - or add an additional symbol that is "bigger" than any other symbol in the collation. Let us, just for convenience, refer to this special symbol as '$' (this is just a convention on how to refer to this special symbol, not the actual dollar character). Then, if S1, S2, ..., Sn are all n symbols in the collation ordered by their value in the collation, perform this mapping: "" : '$' , S1 : Sn || '$' , S2 : Sn-1 || '$' , . . . . . . . Sk : Sn-k+1 || '$', . . . . . . . Sn : S1 || '$' And certainly, adding a new symbol to a collation is actually creating a new collation, and this would maybe be the most straight-forward way of inverting strings. We may not even create any new collation, we could just have a *convention* that a collation named "Inverted" || {Real-Collation-Name} produces the negated comparison results of the ones produced by the {Real-Collation-Name} collation. Or, as I mentioned before, this is the same as "decorating a collation". This is one more way to get rid of the $orders parameter in our current functions. Thanks, Dimitre On Thu, Mar 14, 2024 at 3:24 AM Norm Tovey-Walsh <norm@saxonica.com> wrote: > Dimitre Novatchev <dnovatchev@gmail.com> writes: > > This function can easily handle strings - produce a "string > complement" in the value space for a particular collation. > > > > For a simplified example, revert("abc") would produce "zyx" . This is > doable and really valuable. > > In what sense is “zyx” the complement of “abc”? Over what set of > codepoints and in what collation? > > I am very skeptical that such a function is well defined across all > collations and will always produce a single, correct result in all cases. > > Can you provide a detailed description of how this would work? > > Be seeing you, > norm > > -- > Norm Tovey-Walsh > Saxonica >
Received on Thursday, 14 March 2024 16:06:20 UTC