jmoenig / Snap

a visual programming language inspired by Scratch
http://snap.berkeley.edu
GNU Affero General Public License v3.0
1.5k stars 744 forks source link

Dictionaries don't behave like lists #3328

Open brianharvey opened 6 months ago

brianharvey commented 6 months ago

So, when y'all added dictionaries, you took pains (perhaps to make me happy?) to make them look like regular lists, merely extending the domain of ITEM. But when you try to mutate a dictionary, the results don't match what you'd expect from how lists behave. The worst case is deaeefb3c5711d0974604ef39eb84220fbdfe9ef which replaces instead of inserting. I thought maybe that's because the item to be inserted didn't include a key, but this doesn't work either: help-test script pic

That's the worst case because it loses information, but there are other examples in which it's just the order of items in the list that's lost: 3f0f8ef22102914a66ce212f9767f6a016726c2d

See more at https://forum.snap.berkeley.edu/t/replace-block-with-paired-values/16255

You'll say that this behavior doesn't matter for the use cases for dictionaries you have in mind, but I think if they look like lists, they should behave like lists.

jmoenig commented 6 months ago

Sigh. We talked about this in extenso when we first designed dicts a long time ago, and you were cool about it then.

brianharvey commented 6 months ago

I think I must not have understood that INSERT would actually do REPLACE.

jmoenig commented 6 months ago

Both do the same - only - in the case of non-numerical indices