After creating a Chern class variable such as chern_3 E, the base symbol E acquires as value a hash table that holds the values of the Chern class variables based on it. If something else is assigned to E, the values are no longer referred to by E, and will the space they occupy be collected and reused unless other references to them remain.
i1 : chern_3 E o1 = c E 3 o1 : ChernClassVariable |
i2 : E o2 = E o2 : ChernClassVariableTable |
i3 : peek E o3 = ChernClassVariableTable{symbol$ => E} |
i4 : chern_3 symbol E <- 44 o4 = 44 |
i5 : chern_3 E o5 = 44 |
i6 : peek E o6 = ChernClassVariableTable{3 => 44 } symbol$ => E |
i7 : E = 55 o7 = 55 |
i8 : chern_3 symbol E <- 44 --warning: clearing value of symbol E to allow access to Chern class variables based on it o8 = 44 |
The object ChernClassVariableTable is a type, with ancestor classes MutableHashTable < HashTable < Thing.