>
You’ve got me stumped here. The talk@xquery.com mailing list may be
> the best place to get more details on this.I will try to post to this mailing list, thanks for the link. Indeed I started to implement through xquery a map version able to handle nodes for my needs. It is not obvious, because a map requires to define an equality properties over set. For nodes, deep-equal is a natural candidate, but it does not define an ordering, and performances are lost. For database nodes, it is possible to achieve this with internal (or maybe pre-database) ids, but I can't use it for dynamically created nodes. I guess that the best choice is to provide an optional binding to an external ordering function, something like map:new($maps as map(*)*, binding as map(*)) as map(*), where the binding provides an option to the ordering function (e.g. $order(key1,key2) := binding["order"](key1,key2)). This is actually what is done for C++ or Java sets :
template < class T, // set::key_type/value_type
class Compare = less<T>, // set::key_compare/value_compare
class Alloc = allocator<T> > // set::allocator_type
> class set;
>> - A remark of minor importance : if distinct-values() is used to select
>> keys, the map:module shouldn't accept sequences as keys ? If I try a
>> map:new({("dummy","dummy"):""}), I am actually raising a XPTY0004 error.
> I guess you answered your own question? ;):) not really. My sentence was not correct, I meant "shouldn't the map:module accept sequences as keys ?" : since the baseX map:module is distinct-value based, it should work with sequences as keys.