Prolog does however, allow the user to control the ordering of pattern matching during resolution. Functional languages by their very nature provide for subprogram in the sense of function calls. Other functions that must be utilized by a particular program can be constructed from the use of primitive functions provided in the language. Often times global variables are utilized for storage. Subprograms can not be overloaded.
Subprograms can be generic.
The other is the return stack that is used for nested definitions. For all other storage, a single block of memory is used. Prolog utilizes trees for storage management. Statements are stored in a tree form as are variables and structures. List are present to the user in list form, but not necessarily stored in such a way internally.