Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for addition/subtraction of Map data types #68

Open
wants to merge 49 commits into
base: master
Choose a base branch
from

Conversation

wiredwiz
Copy link
Contributor

This adds the functionality for adding two maps together and for subtracting one map from another. In the case of addition, the key/value pairs from the right map are added to the map on the left. Thus, if there is a key collision, the key/value pair on the right side of the addition operation will be in the resulting map, rather than the left hand side. In the case of subtraction, the keys from the map on the right hand side, are removed from the map on the left hand side. A copy of the left hand side map is returned, minus the removed keys. Any keys that do not exist will simply be ignored. Using the subtraction operation, you could easily find key intersections between two maps. The error messages are also updated to reflect that maps can be used in +/- operations.

wiredwiz and others added 30 commits July 21, 2022 17:26
Fixed typo in comments
…ecrement operators. They will be pursued later. Initial functionality of raw drecrement and increment finished (does not save the value back to source).
…s, but causes a panic on core dump currently.
Adding documentation for the new supported operators to be merged in soon from the NewOps branch.
…code to handle all those over the original 256 limit.
wiredwiz and others added 19 commits July 31, 2022 02:39
…istdude-master

# Conflicts:
#	src/curl.cc
Merging in my docker check to remain commit current
MAX_BASE_FUNC overflow causes function 256 (counting from 0) to overflow, creating a call to function 0 (run_gc)

Checking out from master, the function is `char_list()`. Checking `;function_info()[257][1]` should tell you the affected builtin if you're running a modified build.

Before:
```
;char_list("bob")
#-1:Input to EVAL (this == #-1), line 3:  Incorrect number of arguments (expected 0; got 1)
... called from built-in function eval()
... called from lisdude#58:eval_cmd_string, line 19
... called from lisdude#58:eval*-d, line 13
(End of traceback)
```

After:
```
;char_list("bob")
=> {"b", "o", "b"}
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants