Returns evaluated value of object L. If L is number, then result is that number. If L is string, result is that string. If L is atom, bounded to some value, then result is its value. If L is list, then result is the same as function result with the identifier as first element of list and parameters as rest elements of list. In all other cases, runtime error is raised, which can be intercepted.
Example:
(SETF EXPR ‘(CAR ‘(A B C D) ) )
(EVAL EXPR) ; returns atom A
Notice:
In fact object L is evaluated twice. Any function (except QUOTE) evaluates its parameters (using EVAL). At first, object L is evaluated due to being function parameter, but then it will evaluated once more. So the result of double evaluation will be returned to the caller.