Lisp has many of the characteristics of a functional or
applicative language. However, one Lisp function that is not representative of a purely functional language is:
Polyvariant binding-time analysis for higher-order,
applicative languages. In Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM '93.
Examples of the latter include work by Keller and Sleep [1986], which uses annotations for
applicative languages, work by Sundaresh and Hudak [Sundaresh 1991; Sundaresh and Hudak 1991], which decides what to cache based on given input partitions of programs, and work by Hoover [1992], which uses annotations for an imperative language.
In "Visualizing Evalution in
Applicative Languages," Touretzky and Lee introduce an effective method for teaching the key concepts of evaluation in Lisp.
There has been considerable work on calculi for modeling imperative features in applicative languages [Felleisen and Friedman 1989; Felleisen and Hieb 1992; Odersky et al.
Assignments for applicative languages. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture.
The EVAL and APPLY operations form the core of a Lisp interpreter and are fundamental to implementations of applicative languages in general.
In this article we present a technique for visualizing evaluation in applicative languages that helps to graphically explain each of these concepts.
Graph transformation algorithms for array memory optimization in
applicative languages. PhD thesis, University of California at Davis, Computer Science Department, Davis, Calif.