Trait for tagged pointers. Anything that can be stored and passed around
by the lisp machine should implement this trait. There are two “flavors”
of types that implement this trait. First is “base” types, which are
pointers to some memory managed by the GC with a unique tag (e.g
LispString
, LispVec
). This may seem stange that we would define a
tagged pointer when the type is known (i.e. Gc<i64>
), but doing so let’s
us reinterpret bits without changing the underlying memory. Base types
are untagged into a pointer.