Non-procedural, functional of applicative, languages are well accepted as an excellent means for problem solving, but conventional implementations invite criticism of their performance and constrained notation, which may involve long, clumsy and repeated expressions. Such deficiencies are overcome to a large extent by the (destructive) assignment statement in algorithmic languages and we propose incorporation of the desirable properties of assignment into functional languages, whilst preserving non-procedural semantics. Performance is then addressed via stack storage management for block structured functional languages. Stack storage economics are achieved by efficient handling of the display vector and by early erasure of unwanted links and arguments from the stack. Execution time is optimized by retaining in an appropriate outer function's stack frame, values which would otherwise be recomputed via repeating identical function calls or argument evaluation. This also results in further savings in stack storage in many cases.
Information from pubs.doc.ic.ac.uk/storage-functional-language.