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

# cl:debug:mv

The cl:debug:mv function can be used to debug multiple value expressions:

(cl:debug:mv expr
  expr - a Lisp expression, returning an arbitrary number of values
  returns - the normal Lisp return value from evaluating expr

    (defun cl:debug:mv (expr)
      (setq cl:*multiple-values* nil)
      (let ((result (eval expr)))
        (format t ";; cl:*multiple-values* => ~a~%" cl:*multiple-values*)
        (format t ";; *rslt* => ~a~a~%" *rslt*
                  (if cl:*multiple-values* "" " [invalid]"))
        result))

The cl:debug:mv function first sets the cl:*multiple-values* variable to NIL, then it evaluates the expression. After evaluation it prints the values of the cl:*multiple-values* and *rslt* variables and returns the normal Lisp return value from the evaluation.

Example:

    > (cl:debug:mv '(cl:values 1 2 3))
    ;; cl:*multiple-values* => T
    ;; *rslt* => (1 2 3)
    1

    > (cl:debug:mv 1)
    ;; cl:*multiple-values* => NIL
    ;; *rslt* => (1 2 3) [invalid]
    1

Back to top

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