INTERCAL-72 (the original version of INTERCAL) had only four
data types, the 16-
bit integer (represented with a ., called a 'spot'), the 32-bit integer (:, a 'twospot'), the
array of 16-bit integers (,, a 'tail'), and the
array of 32-bit integers (;, a 'hybrid'). There are 65535 available variables of each type, numbered from .1 to .65535 for 16-bit integers, for instance. However, each of these variables has its own
stack on which it can be pushed and popped (STASHed and RETRIEVEd, in INTERCAL terminology), increasing the possible complexity of data structures.
[2] (More modern versions of INTERCAL have by and large kept the same data structures, with appropriate modifications; TriINTERCAL, which modifies the
radix with which numbers are represented, can use a 10-
trit type rather than a 16-bit type,
[5] and CLC-INTERCAL implements many of its own data structures, such as 'classes and lectures', by making the basic data types store more information rather than adding new types.
[4]) Arrays are dimensioned by assigning to them as if they were a
scalar variable. Constants can also be used, and are represented by a # ('mesh') followed by the constant itself, written as a
decimal number; only integer constants from 0 to 65535 are supported.
[2]