11.3.3. Literal Function Arguments

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.