Obviously, such objects have the following properties:
Let us now discuss the voluntary restrictions introduced in these specifications:
It is clear that we need pointers to defined lists, tables, stacks, files etc... of elements, but these objects will not be defined this way. They will be called containers and will be part of another layer of the specifications and implemented in the kernel, for safe and easy use.
This restriction is not mandatory, but seems to be reasonable considering the applications. Double floating point numbers are only useful for computations numerically not very stable, while they yield slower and heavier implementation. We thus better discourage their use, although it is very easy to reintroduce them. Similarly, using 8 and 16bits numbers save memory but very often slow the memory access since almost all architectures are now optimized for 32bits access.
Another reason to limit the numeric formats, is to simplify the specifications and the underlying semantic models. Being lazy, helps being efficient.