Structures like PersistentList (and especially ones like PersistentVector, which will internally change) should not have public internals, and should be interacted with through their public interface; we have already had one potential bug where the cached count was used in PersistentList in an impossible scenario (ie, we were matching on the case of PersistentList(_,_,count = 0) , which would actually never happen, as an empty list would be expressed as PersistentList::Empty)
Off top of my head, need to:
Make counting always read with len
Use cons to attached a head to a tail
Convert PersistentVector into Vector explicitly, rather than doing so by cloning its internal vals Vector
Structures like PersistentList (and especially ones like PersistentVector, which will internally change) should not have public internals, and should be interacted with through their public interface; we have already had one potential bug where the cached
count
was used inPersistentList
in an impossible scenario (ie, we were matching on the case ofPersistentList(_,_,count = 0)
, which would actually never happen, as an empty list would be expressed asPersistentList::Empty
)Off top of my head, need to:
counting
always read withlen
cons
to attached a head to a tailvals
Vector