How come $Prototype is intrinsic?

The list of intrinsic attributes contains $Prototype. This fact caught me by surprise — why would a note and its alias have different prototypes? I can imagine visual reasons; but if a note N and its alias A have different prototypes, P1 and P2 respectively, it is easy to imagine a case where P1 and P2 differ on a non-intrinsic attribute, in which case so would N and A.

It seems that I must be missing some interesting use case where different prototypes for N and A play a role.

–Abhijit

I’m not sure. The list, IIRC, was created based on the TBX XML data, specifically the attribute definition including the code canInherit="0".

Reviewing this has caused me to remove $Creator, $Prototype and $ReadCount from the list. Although $Name shows the same code, it doesn’t behave as intrinsic so I’ve dropped it from the list too. See the updated list.

The underlying rationale for why a given attribute is/isn’t intrinsic is really one for Tech Support as it is an internal app design issue to which your fellow users here aren’t privvy. Like you I can only see as far as looking inside the app package.

I believe that $Prototype is not intrinsic.

$IsPrototype is intrinsic. Suppose Socrates is an instance of Man:

Socrates ← Man

Man is a prototype, so its $IsPrototype is true. But Socrates is not a prototype. If $IsPrototype were inherited, any note that adopted a prototype would become a prototype.

2 Likes

The error was mine, in aTbRef, and it was updated to correct that this morning.