Hi all,

We have a number of data structures and functions available via Stellar for
manipulating those structures. For example, we provide the following
functions for initializing and working with Bloom filters:
[Stellar]>>> ?BLOOM_
?BLOOM_ADD  ?BLOOM_EXISTS  ?BLOOM_INIT  ?BLOOM_MERGE

For Maps, we have some functions for dealing with existing maps, e.g
MAP_GET, MAP_EXISTS. We even have a MapReduce type of function, MAP. And
from an initialization perspective, you can create a map in Stellar with
what amounts to as an empty JSON object, e.g. mymap:={}. You can also turn
JSON into a proper map using TO_JSON_MAP.

I don't, however, see a way to add to map object contents, e.g. PUT. So the
first question I have is whether this would functionality (assuming I
haven't missed something obvious that enables this in the first place) be
valuable to anyone, or if it's even something we should enable to begin
with. A vote against this option could be the potential for users
unwittingly loading up a ton of data and encountering OOM errors. This
would be bad for running topologies. The second question is whether this
should be a language feature or a specialized set of functions, e.g.
MAP_INIT,MAP_PUT, MAP_REMOVE
vs
mymap:={}
mymap['mike']:='miklavcic'
mymap:=FILTER(mymap , (x) -> x != 'mike')

*Note*, from the above, the only thing we appear to be missing is the
ability to add to an existing map. Initializing and removing elements can
be handled by existing functionality.

Best,
Mike

Reply via email to