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




Avast logo

Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
www.avast.com