A Simple and Efficient Implementation Of Higher-Order Functions In Lisp
by Georgeff, Michael P. and Bodnar, Stephen F.
Technical Note 339
Institution: AI Center, SRI International
Address: 333 Ravenswood Ave., Menlo Park, CA 94025
Dec 1984.
A relatively simple method for handling higher-order functions (funargs) in LISP is described. It is also shown how this scheme allows extension of the LISP language to include partial application of functions. The basis of the approach is to defer evaluation of function-valued expressions until sufficient arguments have been accumulated to reduce the expression to a nonfunctional value. This results in stacklike environment structures rather than the treelike structures produced by standard evaluation schemes. Consequently, the evaluator can be implemented on a standard runtime stack without requiring the complex storage management schemes usually employed for handling higher-order functions. A full version of LISP has been implemented by modifying the FRANZ LISP interpreter to incorporate the new scheme. These modifications prove to be both simple and efficient.
![]() Adobe PDF |
![]() BibTeX |
![]() EndNote |
