Pascal has user defined data types called records. It doesn't support encapsulation until later versions. ML is implemented as functions. These functions are high order functions and are nested statically. Subprograms can not be overloaded.
Subprograms can be generic.
The other is the return stack that is used for nested definitions. It has user defined data types called records. It doesn't support encapsulation until later versions. As for functional language, for example, ML, it does not support encapsulation.