···1515 },
1616 {
1717 "type": "hexcasting:pattern",
1818- "op_id": "hexcasting:add",
1919- "anchor": "hexcasting:add",
2020- "input": "map<k, v>, map<k, v>",
1818+ "op_id": "hexcasting:replace",
1919+ "anchor": "hexcasting:replace",
2020+ "input": "map<k, v>, k, v",
2121 "output": "map<k, v>",
2222- "text": "Merges two maps together. Maps cannot have duplicate items: any entry in the latter map will override that in the first map."
2222+ "text": "Replaces the element associated with $(n)k/$ with $(n)v/$. If $(n)k/$ is not present in the map, the entry is created and placed at the end of the map."
2323 },
2424 {
2525 "type": "hexcasting:pattern",
2626- "op_id": "hexcasting:sub",
2727- "anchor": "hexcasting:sub",
2828- "input": "map<k, v>, map<t, *>",
2626+ "op_id": "hexcasting:remove_from",
2727+ "anchor": "hexcasting:remove_from",
2828+ "input": "map<k, v>, k",
2929 "output": "map<k, v>",
3030- "text": "Removes every entry in the first map that is found in the second map. The values in the second map are ignored."
3030+ "text": "Throws out the map's association for the given key. If there is no matching association, the map is returned unchanged."
3131 },
3232 {
3333 "type": "hexcasting:pattern",
···3535 "anchor": "hexcasting:index",
3636 "input": "map<k, v>, k",
3737 "output": "v?",
3838- "text": "Disintegrates the map, returning only the value associated with the given key. O(1), unlike scanning a list."
3838+ "text": "Destroys the map, returning only the value associated with the given key. O(1), unlike scanning a list."
3939+ },
4040+ {
4141+ "type": "hexcasting:pattern",
4242+ "op_id": "hexcasting:splat",
4343+ "anchor": "hexcasting:splat",
4444+ "input": "map<k, v>",
4545+ "output": "k, v, k, v...",
4646+ "text": "Disintegrates the map, returning the key-value pairs in the order I inserted them."
3947 },
4048 {
4149 "type": "hexcasting:pattern",
4250 "op_id": "hexcasting:unappend",
4351 "anchor": "hexcasting:unappend",
4444- "input": "map<k, v>",
4545- "output": "map<k, v>, (k, v)?",
4646- "text": "Shaves off one element of a map. Which element gets shaved off is undefined and subject to Nature's whims. If used on an empty map, returns two nulls."
5252+ "input": "map<k,v>",
5353+ "output": "map<k,v>, (k,v | nulls)",
5454+ "text": "Shaves off the element I added most recently from a map. If used on an empty map, returns two nulls."
4755 },
4856 {
4957 "type": "hexcasting:pattern",
5050- "op_id": "hexcasting:replace",
5151- "anchor": "hexcasting:replace",
5252- "input": "map<k, v>, k, v",
5858+ "op_id": "hexcasting:deconstruct",
5959+ "anchor": "hexcasting:deconstruct",
6060+ "input": "map<k,v>",
6161+ "output": "map<k,v>, (k,v | nulls)",
6262+ "text": "Shaves off the element I added least recently from a map. If used on an empty map, returns two nulls."
6363+ },
6464+ {
6565+ "type": "hexcasting:pattern",
6666+ "op_id": "hexcasting:add",
6767+ "anchor": "hexcasting:add",
6868+ "input": "map<k, v>, map<k, v>",
5369 "output": "map<k, v>",
5454- "text": "Replaces the element associated with $(n)k/$ with $(n)v/$. If $(n)k/$ is not present in the map, the entry is created."
7070+ "text": "Merges two maps together. Maps cannot have duplicate items: any entry in the latter map will override that in the first map."
5571 },
5672 {
5773 "type": "hexcasting:pattern",
5858- "op_id": "hexcasting:remove_from",
5959- "anchor": "hexcasting:remove_from",
6060- "input": "map<k, v>, k",
7474+ "op_id": "hexcasting:sub",
7575+ "anchor": "hexcasting:sub",
7676+ "input": "map<k, v>, map<t, *>",
6177 "output": "map<k, v>",
6262- "text": "Throws out the map's association for the given key. If there is no matching association, the map is returned unchanged."
7878+ "text": "Removes every entry in the first map that is found in the second map. The values in the second map are ignored."
6379 }
6480 ]
6581}