XLISP &aux

Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference

# &aux

Type: | - | keyword
Source: | - | xleval.c

## Syntax

&aux [aux-var | (aux-var aux-value)] ...
  aux-var - auxiliary variable
  aux-value - auxiliary variable initialization

## Description

In XLISP, there are several times that you define a formal argument list for a body of code [like defun, defmacro, :answer and lambda]. The 'aux-var' variables are a mechanism for you to define variables local to the function or operation definition. If there is an optional 'aux-value', they will be set to that value on entry to the body of code. Otherwise, they are initialized to NIL. At the end of the function or operation execution, these local symbols and their values are removed.

## Examples

A function 'my-add' with one required argument 'num1', one &rest argument 'num-list', and one &aux variable 'sum':

    (defun my-add (num1 &rest num-list &aux sum)
      (setq sum num1)          ; initialize SUM
      (dolist (i num-list)     ; loop through the num-list
        (setq sum (+ sum i)))  ; add each number to SUM
      sum)                     ; return SUM when finished

    (my-add 1 2 3 4)    => 10
    (my-add 5 5 5 5 5)  => 25

See + , defun, dolist, &rest, setq.

A function 'more-keys' with one required argument 'a' and three &aux variables 'b' [initialized to NIL], 'c' [initialized to 99], and 'd' [initialized to T ]:

    (defun more-keys (a &aux b (c 99) (d t))
      (format t "a=~a b=~a c=~a d=~a~%" a b c d))

    > (more-keys "hi")
    a=hi b=NIL c=99 d=T
    NIL

See defun, format.

See also:

- Auxiliary Variables

Back to Top

Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference