Lisp is a family of programming languages that includes Common-Lisp, Emacs-Lisp , Interlisp?, ZetaLisp?, and Maclisp , among others. Scheme, according to most Schemers, is also firmly within this family. Some Common Lispers enjoy denying Scheme the status of a Lisp; oft cited is R5RS's formal syntax, which defines Scheme's syntax in terms of a token stream instead of Lisp objects, i.e. lists, symbols, et cetera. However, Lisp is just a name, and whether Scheme is a Lisp is a purely conventional question of what you definition of Lisp happens to be: the whole issue is purely nominal.
According to McCarthy Lisp is categorized by the following ideas
- Computing with symbolic expressions rather than numbers
- Representation of symbolic expressions and other information by list structure in the memory of the computer
- Representation of information in external media mostly by multi level lists and sometimes by sexp's
- A small set of selector and constructor operations expressed as functions
- Composition of functions as a tool for forming more complex functions
- Use of conditional expressions for getting branching into function definitions
- Recursive use of conditional expressions as a sufficient tool for building computable functions
- Use of lambda expressions for naming functions
- Representation of lisp programs as lisp data
- Conditional expression interpretation of boolean connectives
- Lisp function eval that serves both as a formal definition of the language and as an interpreter
- Garbage collection as a means of handling the erasure problem