In CL there are many special-ops like (let ((x (...)))) having the same form of (fun x y ..) but that are not a function call. Also macro are a form of special-op. With this approach all CL code use a common AST, and so it can be managed by macro. It is a form of abuse of notation.