code: def set(self, key, val):
          
          return self.evolver().set(key, val).persistent()
docs: Return a new PMap with key and val inserted.
  
          >>> m1 = m(a=1, b=2)
          >>> m2 = m1.set('a', 3)
          >>> m3 = m1.set('c' ,4)
          >>> m1
          pmap({'a': 1, 'b': 2})
          >>> m2
          pmap({'a': 3, 'b': 2})
          >>> m3
          pmap({'a': 1, 'c': 4, 'b': 2})