After some discussion at the office yesterday, I realized that having
ProtoAtom would allow us to reduce the memory footprint of stuff like
EvaluationLink
PredicateNode "English"
WordNode "dumbass"
or
MemberLink
WordNode "dumbass"
ConceptNode "English words"
or whatever...
If TVs and AVs were implemented as ProtoAtoms, then they would be
optional, so we could create some MemberLInks e.g. without them
This would just require various cognitive process to know what to do
when encountering an Atom with no TV or AV
For example:
-- PLN could assume, when encountering a MemberLink or EvaluationLink
with no TV, that a certain default TV (perhaps (1,1) ) should be
assumed
-- ECAN could have its forgetting agent and all its other agents
ignore Atoms with no AV... except that when an Atom A is forgotten,
all the links coming out of A that have no AV are also forgotten....
So rather than having "English" as a property be a ProtoAtom, we would
have "English" as a property connected to the WordNode for an English
word with a very lightweight link, indicating the fact that we don't
want to bother doing reasoning or attention allocation on this
link....
This is not a huge point in the end, but it's one among many examples
of the flexibility that would come from putting TV and AV in the
Atomspace instead of having them as hard-coded structures...
-- Ben