Van: Rob Stapper [mailto:r.stapper@lijbrandt.nl] Verzonden: donderdag 16 juli 2015 8:48 Aan: 'Graydon Saunders' Onderwerp: RE: [basex-talk] Union of maps?
Hoi Graydon,
Here’s one of my map-extensions. This one I use for merging maps.
It’s also an example of how to create your own high-order-functions.
Hopes is it helps.
Cheers,
Rob Stapper
declare function ext.map:merge
( $sourceMap as map(*)
, $targetMap as map(*)
, $updateFunction as function(*)
) as map(*)
{
fold-left( map:keys( $sourceMap)
, $targetMap
, function( $targetMap
, $key
)
{
map:put( $targetMap
, $key
, $updateFunction( map:get( $sourceMap, $key)
, map:get( $targetMap, $key)
)
)
}
)
} ;
Van: basex-talk-bounces@mailman.uni-konstanz.de [mailto:basex-talk-bounces@mailman.uni-konstanz.de] Namens Graydon Saunders Verzonden: woensdag 15 juli 2015 20:01 Aan: BaseX Onderwerp: [basex-talk] Union of maps?
Hi --
In BaseX 8.2.1, I have a bunch of maps; the maps may have some overlap of key values. I would like to merge/find the union of all of these maps while retaining all the values associated with each key in the resulting map-of-all-maps. (Combined map? Any word can be wrong, here! :)
map:merge() doesn't do this; http://docs.basex.org/wiki/Map_Module#map:merge says
"The associated value for each such key is taken from the last map in the input sequence $input that contains an entry with this key." and testing confirms this.
Is there a straightforward way to do this that I'm missing?
Thanks!
Graydon
--- Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware. https://www.avast.com/antivirus