Every Prospero object has one or more base types associated with it. All Prospero objects have a base type of OBJECT. This means that they can have attributes attached to them. In addition, objects with a base type of FILE can store data, and objects with a base type of DIRECTORY can store directory information.
The base type of a Prospero object is accessible through the BASE-TYPE intrinsic attribute. The primitive value for BASE-TYPE is OBJECT. If an object's BASE-TYPE attribute has a value of OBJECT+FILE+DIRECTORY, then the object can have attributes attached to it, can contain data, and can contain links. As a shorthand, since all objects have OBJECT as one of their base types, an object with more than one base type can have the OBJECT implied, so that the BASE-TYPE value OBJECT+FILE+DIRECTORY is equivalent to the value FILE+DIRECTORY and the value FILE is equivalent to the value FILE+OBJECT. The order of values in the BASE-TYPE attribute is unimportant, so DIRECTORY+FILE is equivalent to FILE+DIRECTORY.
In the rest of this document, when we say ``directory,'', we mean ``an object which has DIRECTORY as part of its BASE-TYPE.'' When we say ``file,'' we mean ``an object which has FILE as part of its BASE-TYPE.''
One may use EDIT-OBJECT-INFO to edit the BASE-TYPE attribute to remove the FILE type from it only if the file is empty (zero length), and one may remove the DIRECTORY type from it only if the directory is empty (contains no links). To add a type to the BASE-TYPE, one must use the ADD option to CREATE-OBJECT.