[xquery-talk] xquery 3.1 wishlist

Christian Grün christian.gruen at gmail.com
Fri Jun 26 08:18:08 PDT 2015


> On the whole I agree, and I respect the current status quo of the specification. However, I expect more changes will follow from actually working with it. IMHO the current distinction between sequences and arrays could eventually be abolished.

While I haven't actively participated in the specification of arrays
in the XML Working Group, I have been following it quite actively.
Various impressive solutions were proposed, pretty soon it got more
than obvious that there is no chance to specify arrays in any way that
is completely consistent and intuitive. From the very beginning,
XQuery was designed to efficiently handle flattened sequences, and
this concept is completely different to what can be done with arrays.
The resulting solution for arrays will not be able to meet all
expectations, but I can clearly say I am pretty impressed with it.

>> Ignore my last sentence, I don't want to make this claim.

Too late ;)



> 2015-06-26 16:21 GMT+02:00 Michael Kay <mike at saxonica.com>:
>>
>>
>>
>> Agreed, it could be implemented as a user-defined function (although this particular solution currently throws an error in eXist). However, what bothers me is that fn:index-of(1,2,[3,4], 3) may lead to unexpected results, because the array is flattened. I get the impression that array-specific semantics are sacrificed here, where in other cases they aren't, and the dividing line is still unclear me.
>>
>>
>> Arrays will give unexpected results, full stop. We spent two years trying to find a design that didn’t have unexpected results, and we failed. Start with the fact that $A[1] returns the whole array, and that you can’t iterate over arrays with FLWOR expressions. Arrays are grafted on to the data model as an afterthought, and it shows right through. That’s not for want of trying: we were running out of names for all the different ideas we rejected as unworkable.
>>
>> The choice of functions in the library is inevitably arbitrary. I think we found that if you wanted a completely minimalist approach, everything could be defined in terms of three functions. At the other extreme you would have the functx approach, a thousand functions to do everything you could ever imagine, but where it’s quicker to write the function yourself than to find it in the library.
>>
>> Michael Kay
>> Saxonica
>>
>>
>> Thanks,
>> Wouter
>>
>> 2015-06-26 14:16 GMT+02:00 Michael Kay <mike at saxonica.com>:
>>>
>>> I would think both of these could be implemented as user-defined functions but it’s hard to know without seeing a specification: saying you want a function called array:index-of() is not very informative unless you explain exactly what you want the function to do.
>>>
>>> If it’s to behave like fn:index-of() then you can write it as
>>>
>>> array:index-of($array, $value) {
>>>    (1 to array:size($array))[ $array(.) = $value ]
>>> }
>>>
>>> which is hardly a great hardship to write as a user-defined function.
>>>
>>>
>>> Michael Kay
>>> Saxonica
>>>
>>> On 26 Jun 2015, at 12:18, W.S. Hager <wshager at gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> I've been working with the recent xquery 3.1 implementation in the develop branch eXist-db. I encountered some cases that were quite hard to work around:
>>>
>>> - the lack of array:index-of()
>>> - the lack of the iterator index in arrayfor-each and related higher-order functions
>>>
>>> Perhaps someone of the workgroup is available to discuss those cases.
>>>
>>> Thanks,
>>> Wouter
>>> --
>>>
>>> W.S. Hager
>>> Lagua Web Solutions
>>> http://lagua.nl
>>>
>>>
>>>
>>> --
>>>
>>> W.S. Hager
>>> Lagua Web Solutions
>>> http://lagua.nl
>>>
>>>
>>> _______________________________________________
>>> talk at x-query.com
>>> http://x-query.com/mailman/listinfo/talk
>>>
>>>
>>
>>
>>
>> --
>>
>> W.S. Hager
>> Lagua Web Solutions
>> http://lagua.nl
>>
>>
>
>
>
> --
>
> W.S. Hager
> Lagua Web Solutions
> http://lagua.nl
>
>
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk



More information about the talk mailing list