 0
 0 
Improvement
The argument New should really be called Updates or NewKeyValuePairs because these are updates which are merged with DictIn to give DictOut.
| Did you know ... | Search Documentation: | 
|  | Predicate put_dict/3 | 
?- A = point{x:1, y:2}.put(#{x:3}).
A = point{x:3, y:2}.
?- A = point{x:1, y:2}.put([x=3]).
A = point{x:3, y:2}.
?- A = point{x:1, y:2}.put([x=3,z=0]).
A = point{x:3, y:2, z:0}.
 0
 0 
The argument New should really be called Updates or NewKeyValuePairs because these are updates which are merged with DictIn to give DictOut.