The AutoCADET's Guide to Visual LISP: Optimize and Customize Your AutoCAD Design Environment

Your exploration of the essence of Visual LISP starts with the evaluator. All program code is written with the evaluator in mind. This is partly why the syntax appears odd, especially for programmers who know other computer languages.
The evaluator follows some basic rules:
If you give the evaluator a number, it returns the number. In fact, if you give the evaluator any single item, such as a quoted string of characters, that item is returned as a result.
If you give the evaluator a symbol name, it returns the content, or binding, of the symbol. For example, if you are using the TMP symbol to represent a temporary result in a computation and you give the evaluator the TMP symbol name, the value that TMP points to is returned.
If you give the evaluator a list (an ordered set of symbols and lists), the first element of the list is checked to see whether it is a recognized function name. If the first member is a function, that function is evaluated, with the remainder of the list considered the parameters to the function. If the first member is not a function, the contents of the list are evaluated and returned.
The two basic types of functions are those that exist in Visual LISP and those you can define. The functions that exist in Visual LISP are called subrs (pronounced "sub-ers"). You can add more subrs through the ObjectARX system. Some Visual LISP functions are loaded as ObjectARX...