There are five datatypes in COOL: string (STR), number (NUM), object
(OBJ), list (LIST), and error (ERR).

No type checking is done by COOL at compile-time.  At run-time, if a
type mismatch occurs in an operator or system function, E_TYPE is

String (STR)

Strings are enclosed in doublequotes (").
The following are examples of string constants:

	"The rain in spain.\n"
	"They call me \"The Woodmaster\", son."

String variables are declared as follows:

Number (NUM)

Numbers are long integers (typically in the range -2^31 to 2^31 - 1).

Object ID (OBJ)

Object ID's consist of two parts:  the ID, and the servername.
The following are values of type OBJ:


If the object in question is on the local MUD, the server part may
be omitted:


represents object #7 on the local MUD.  The value #-1 is a special
value, usually meaning 'nothing' or some kind of error condition.

List (LIST)

Lists are heterogenous, ordered collections of other datatypes.
They can be manipulated as unordered sets, using the set_add() and
set_remove() functions, or as ordered lists, using list_insert(),
list_append(), list_assign().  and list_delete().

Typically lists are used to store things like the contents of a
room (a list of OBJ), or a list of methods on an object (a list
of STR).

The elements of a list are enclosed by braces, and separated by commas.
The following are examples of lists:

	{}				(the empty list)
	{1, 2, 3}
	{"abc", "def", "ghi"}
	{ {1, 2}, {3, 4}, {5, 6} }	(a list of lists)
	{1, "abc", #3}			(a heterogenous list)

Error (ERR)

Error values store the result of an operation.  The following is a list
of the current errors and their meanings:

    E_TYPE		Type mismatch
    E_RANGE		Range error
    E_INVIND		Invalid indirection
    E_DIV		Division by zero
    E_MAXREC		Maximum recursion exceeded
    E_METHODNF		Method not found
    E_VARNF		Variable not found
    E_FOR		For variable not a list
    E_SERVERNF		Server not found
    E_SERVERDN		Server down
    E_OBJNF		Object not found
    E_MESSAGE		Message unparseable
    E_TIMEOUT		Timed out
    E_STACKOVR		Stack overflow
    E_STACKUND		Stack underflow
    E_PERM		Permission denied
    E_INTERNAL		Internal error