I have a question on the evaluation of Scheme, I just want to make sure I have a correct understanding on how procedures are evaluated.
So when the Scheme interpreter starts to evaluate a list, the first element is evaluated, this has to evaluate to a procedure or it is an error. If this procedure isn't a special form, then each element of the list is evaluated and then passed into the procedure as a parameter. If the procedure is a special form, then a different evaluation process is carried out e.g. for if, the first parameter is evaluated and then only one of two and three are evaluated. Also, atoms evaluated to either themselves, or a value they have been previously bound to.
Basically, are special forms needed to stop everything from being evaluated? Thanks