class_docstr: Persistent set implementation. Built on top of the persistent map. The set supports all operations
  in the Set protocol and is Hashable.
  
  Do not instantiate directly, instead use the factory functions :py:func:`s` or :py:func:`pset`
  to create an instance.
  
  Random access and insert is log32(n) where n is the size of the set.
  
  Some examples:
  
  >>> s = pset([1, 2, 3, 1])
  >>> s2 = s.add(4)
  >>> s3 = s2.remove(2)
  >>> s
  pset([1, 2, 3])
  >>> s2
  pset([1, 2, 3, 4])
  >>> s3
  pset([1, 3, 4])
docstr: Create a new evolver for this pset. For a discussion on evolvers in general see the
  documentation for the pvector evolver.
  
  Create the evolver and perform various mutating updates to it:
  
  >>> s1 = s(1, 2, 3)
  >>> e = s1.evolver()
  >>> _ = e.add(4)
  >>> len(e)
  4
  >>> _ = e.remove(1)
  
  The underlying pset remains the same:
  
  >>> s1
  pset([1, 2, 3])
  
  The changes are kept in the evolver. An updated pmap can be created using the
  persistent() function on the evolver.
  
  >>> s2 = e.persistent()
  >>> s2
  pset([2, 3, 4])
  
  The new pset will share data with the original pset in the same way that would have
  been done if only using operations on the pset.
docstr_tok: ["Create","a","new","evolver","for","this","pset",".","For","a","discussion","on","evolvers","in","general","see","the","documentation","for","the","pvector","evolver",".","Create","the","evolver","and","perform","various","mutating","updates","to","it",":",">",">",">","s1","=","s","(","1",",","2",",","3",")",">",">",">","e","=","s1.evolver","(",")",">",">",">","_","=","e.add","(","4",")",">",">",">","len","(","e",")","4",">",">",">","_","=","e.remove","(","1",")","The","underlying","pset","remains","the","same",":",">",">",">","s1","pset","(","[","1",",","2",",","3","]",")","The","changes","are","kept","in","the","evolver",".","An","updated","pmap","can","be","created","using","the","persistent","(",")","function","on","the","evolver",".",">",">",">","s2","=","e.persistent","(",")",">",">",">","s2","pset","(","[","2",",","3",",","4","]",")","The","new","pset","will","share","data","with","the","original","pset","in","the","same","way","that","would","have","been","done","if","only","using","operations","on","the","pset","."]
code: def evolver(self):
      """
      Create a new evolver for this pset. For a discussion on evolvers in general see the
      documentation for the pvector evolver.
  
      Create the evolver and perform various mutating updates to it:
  
      >>> s1 = s(1, 2, 3)
      >>> e = s1.evolver()
      >>> _ = e.add(4)
      >>> len(e)
      4
      >>> _ = e.remove(1)
  
      The underlying pset remains the same:
  
      >>> s1
      pset([1, 2, 3])
  
      The changes are kept in the evolver. An updated pmap can be created using the
      persistent() function on the evolver.
  
      >>> s2 = e.persistent()
      >>> s2
      pset([2, 3, 4])
  
      The new pset will share data with the original pset in the same way that would have
      been done if only using operations on the pset.
      """
      return PSet._Evolver(self)
  
imports: from collections.abc import Set, Hashable
  import sys
  from typing import TypeVar, Generic
  from pyrsistent._pmap import pmap
label_desc: Use image node_id 15 for calling the PSet obj's underlying member method code with example usage: obj.evolver() and returns: PSet