code: def merge(d1, d2):
      
      d1, d2 = deepcopy(d1), deepcopy(d2)
      if d1 == {} or type(d1) is not dict:
          return _merge_fix(d2)
  
      for key in d2.keys():
          # "&:arg" join method
          if key[0] == '&':
              data = d2[key]
              key = key[1:]
              if key in d1:
                  if type(d1[key]) is dict and type(data) is dict:
                      d1[key] = merge(d1[key], data)
                  elif type(d1[key]) is list:
                      d1[key].append(data)
                  else:
                      d1[key] = [d1[key], data]
              else:
                  # not found, just add it
                  d1[key] = data
  
          # "-:arg" reduce method
          elif key[0] == '-':
              data = d2[key]
              key = key[1:]
              if key in d1:
                  # simply remove the key
                  if data is None:
                      d1.pop(key)
                  elif type(d1[key]) is list and data in d1[key]:
                      d1[key].remove(data)
  
          # standard replace method
          else:
              d1[key] = _merge_fix(d2[key])
  
      return d1
docs: This method does cool stuff like append and replace for dicts
          d1 = {
            "steve": 10,
            "gary": 4
          }
          d2 = {
            "&steve": 11,
            "-gary": null
          }
          result = {
            "steve": [10, 11]
          }