Abstract
In this chapter we will be examining the language design aspects of the major applicative programming language LISP. As such, this chapter is not meant to be a tutorial on LISP. The reader who has not had previous experience with the language would do well to read the primer by [Weissman 67] or [Winston 79] for an excellent introduction to the language. I will begin with a general discussion of functions and evaluation. This is followed by showing how programs and data can be represented via a uniform mechanism, the so-called S-expression. Then I present the LISP interpreter in LISP, to reveal both the simple semantics of this powerful language and the simplicity of writing a sophisticated program. In the later sections I examine more detailed issues of language design and implementation relating to LISP including shallow binding, the handling of FEXPRs and FUNARGs and lazy evaluation. The treatment here has been especially influenced by John Allen’s Anatomy of LISP, (McGraw-Hill), which is recommended to the reader who wants a more advanced discussion of these topics.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
Rights and permissions
Copyright information
© 1983 Computer Science Press
About this chapter
Cite this chapter
Horowitz, E. (1983). Functional Programming. In: Fundamentals of Programming Languages. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-96729-0_12
Download citation
DOI: https://doi.org/10.1007/978-3-642-96729-0_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-96731-3
Online ISBN: 978-3-642-96729-0
eBook Packages: Springer Book Archive