Appendix 3. Predefined Types

On these two pages is a table showing each of MDL's predefined TYPEs, its primitive type if different, and various flags: S for STRUCTURED, E for EVALTYPE not QUOTE, and A for APPLICABLE.

X means that an object of that TYPE cannot be CHTYPEd to and hence cannot be READ in (if attempted, a CAN'T-CHTYPE-INTO error is usual).

B means that an object of that TYPE cannot be READ in (if attempted, a STORAGE-TYPES-DIFFER error is usual), that instead it is built by the interpreter or CHTYPEd to by a program, and that its PRINTed representation makes it look as though its TYPEPRIM were different.

% means that an object of that TYPE is PRINTed using % notation and can be READ in only that way.

TYPE TYPEPRIM S E A comments
ACTIVATION FRAME X
ASOC B sic: only one S
ATOM
BITS WORD
BYTES S
CHANNEL VECTOR S X
CHARACTER WORD
CLOSURE LIST S A
CODE UVECTOR S
DECL LIST S
DISMISS ATOM can be returned by interrupt handler
ENVIRONMENT FRAME B
FALSE LIST S
FIX WORD A
FLOAT WORD
FORM LIST S E
FRAME B
FSUBR WORD A X
FUNCTION LIST S A
HANDLER VECTOR S X
IHEADER VECTOR S X "interrupt header"
ILLEGAL WORD X Garbage collector may put this on non-LEGAL? object.
INTERNAL INTERNAL-TYPE X should not be seen by programs
LINK ATOM X for terminal shorthand
LIST S E
LOCA B locative to TUPLE
LOCAS B locative to ASOC
LOCB B locative to BYTES
LOCD % locative to G/LVAL
LOCL B locative to LIST
LOCR % locative to GVAL in pure program
LOCS B locative to STRING
LOCT B locative to TEMPLATE
LOCU B locative to UVECTOR
LOCV B locative to VECTOR
LOSE WORD a place holder
MACRO LIST S A
OBLIST UVECTOR S X
OFFSET OFFSET A %
PCODE WORD % "pure code"
PRIMTYPE-C WORD % "primtype code"
PROCESS B
QUICK-ENTRY VECTOR S A % an RSUBR-ENTRY that has been QCALLed and RSUBR-LINKed
QUICK-RSUBR VECTOR S A %/B an RSUBR that has been QCALLed and RSUBR-LINKed
READA FRAME X in eof slot during recursive READ via READ-TABLE
RSUBR VECTOR S A %/B if code vector is pure/impure, respectively
RSUBR-ENTRY VECTOR S A %
SEGMENT LIST S E
SPLICE LIST S for returning many things via READ-TABLE
STORAGE S If possible, use FREEZE SUBR instead.
STRING S
SUBR WORD A X
TAG VECTOR S X for non-local GOs
TEMPLATE S B The interpreter itself can't build one. See Lebling (1979).
TIME WORD used internally to identify FRAMEs
TUPLE S B vector on the control stack
TYPE-C WORD % "type code"
TYPE-W WORD % "type word"
UNBOUND WORD X value of unassigned but bound ATOM, as seen by locatives
UVECTOR S E "uniform vector"
VECTOR S E
WORD