Some functions require arguments that are symbols. Normally, the arguments to a function are evaluated before the function is actually invoked. It is possible to cause a function's arguments not to be evaluated by using the exclamation modifier in the function declaration.
As an example, we can write our own version of the
add_set_function function mentioned above:
Gamma>function my_add_set (!sym, !exp) {add_set_function(sym, exp);}(defun my_add_set (&noeval sym &noeval exp) (add_set_function sym exp))Gamma>my_add_set (c, princ("My value = "));(princ "My value = ")Gamma>c = 21 / 3;My value = 7
For more details on function arguments see Function Arguments in the Functions and Program chapter of this Guide.