Nyquist / XLISP 2.0 -
Contents |
Tutorials |
Examples |
Reference
Evaluation
- with-errset - evaluate expressions without entering the Break Loop
- apply* and funcall* - work also with macros and special forms
with-errset
Evaluate an expression without entering the
Break Loop
on error
or cerror:
(defmacro with-errset (expr &optional (print-flag nil))
`(progv '(*breakenable*) '(nil)
(errset ,expr ,print-flag)))
See defmacro,
errset,
nil,
&optional,
progv.
Note: errset does not
protect against the break function.
Back to top
apply* and funcall*
In Lisp, macros and special forms are no functions. This
means that apply and
funcall only work with functions of
type SUBR [built-in function] or CLOSURE [functions defined by
defun, flet,
labels, or lambda], but
with macros and special forms a 'bad function'
error is signalled. Here are two examples how to work around this
behaviour:
(defun apply* (function args)
(eval (cons function args)))
(defun funcall* (function args)
(eval (cons function args)))
Warning: These functions can produce unwanted
side-effects because macros and special forms do
not need to conform to functional evaluation rules. Use them on your own
risk.
Back to top
Nyquist / XLISP 2.0 -
Contents |
Tutorials |
Examples |
Reference