The specification of map:new and map:entry can be found in the XSLT 3.0 working 
draft, and it does indeed specify that when there are duplicates, the last one 
wins.

http://www.w3.org/TR/xslt-30/#map-functions

Michael Kay
Saxonica

On 21 Nov 2013, at 07:56, jean-marc Mercier <[email protected]> wrote:

> @John
> 
> Hello.
> I started modifying your RB tree. I noticed that, while inserting two time 
> the same keys, the last inserted value replace
> the previous one into your rbtree. As an illustration the following query
> 
> let $map := map:new( (map:entry("dummy","rocks"),map:entry("dummy","roll")) )
> return map:get($map,"dummy")
> 
> returns "roll"
> 
> I was expecting to "rocks". First : can you reproduce it ? (I modified your 
> files, and use BaseX interpretor. It is better to check with another 
> implementation). 
> Second, should I "roll" your rbtree or is this expected (is this a bug or not 
> ?) ?
> 
> 
> 
> 
> 
> 
> 2013/11/20 jean-marc Mercier <[email protected]>
> Yes you're right, using fold should be strightfroward.
> 
> For the remove function, I'll try. Hopefully I won't spent too much time :)
> I'll keep you posted
> 
> 
> 2013/11/20 John Snelson <[email protected]>
> On 20/11/13 13:16, jean-marc Mercier wrote:
> ok. I've done a first draft that is working. I will keep the code a
> little bit to tune and complete it. For instance, that could be an idea
> to implement the remove($map,$key) function, or to implement key($map).
> 
> Implenting keys($map) can be done using the fold() function. I recall the 
> remove() algorithm being a fair amount harder to implement in a functional 
> red/black tree, and I didn't need it so I didn't tackle it.
> 
> 
> However, I have to modify your rbtree to do it.
> 
> Very happy to accept contributions of a remove() implementation if you do it. 
> :-)
> 
> 
> John
> 
> -- 
> John Snelson, Lead Engineer                    http://twitter.com/jpcs
> MarkLogic Corporation                         http://www.marklogic.com
> 
> 
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk

_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to