# A set of ''primitive processes'', which would be termed ''primitive functions'' in modern languages.
The data structure of IPL is the list, but lists are more intricate structures than in many languages. A list consists of a singly linked sequence of symbols, as might be expected -- plusexpected—plus some ''description lists'', which are subsidiary singly linked lists interpreted as alternating attribute names and values. IPL provides primitives to access and mutate attribute value by name. The description lists are given local names (of the form 9-1). So, a list named L1 containing the symbols S4 and S5, and described by associating value V1 to attribute A1 and V2 to A2, would be stored as follows. 0 indicates the end of a list; the cell names 100, 101, etc. are automatically generated internal symbols whose values are irrelevant. These cells can be scattered throughout memory; only L1, which uses a regional name that must be globally known, needs to reside in a specific place.
{|style="font-family:monospace; margin: 1em auto"
Line 74:
* Manipulation of symbols; e.g., test if a symbol denotes an integer, or make a symbol local.
* I/O operations
* "generators", which correspond to iterators and filters in functional programming. For example, a generator may accept a list of numbers and produce the list of their squares. Generators could accept suitably designed functions—- strictlyfunctions—strictly, the addresses of code of suitably designed functions—- asfunctions—as arguments.