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)))))