unless
Das Macro unless erwartet eine Liste von mehreren Argumenten. Wenn das erste Argument den Wert nil hat, dann werden die weiteren Argumente ausgewertet. Das Resultat ist der Wert des letzten Arguments. Wenn das erste Argument zu einem Wert ungleich nil auswertet, werden die anderen Argumente nicht ausgewertet.
> (unless nil 1 2)
2
> (unless nil)
nil
> (unless t 1 2 3)
nil
Das Macro unless beruht auf if, first, rest, cons, list und progn:
(setq unless
(mlambda l
(list
if
(first l)
nil
(cons
progn
(rest l)))))
> (unless nil 1 2)
2
> (unless nil)
nil
> (unless t 1 2 3)
nil
Das Macro unless beruht auf if, first, rest, cons, list und progn:
(setq unless
(mlambda l
(list
if
(first l)
nil
(cons
progn
(rest l)))))