awhen

Das Macro awhen ist eine Erweiterung des Macros when. Wie dieses erwartet es eine Liste von mehreren Argumenten. Wenn das erste Argument, der Test, einen Wert ungleich nil hat, dann werden die weiteren Argumente ausgewertet.

Der Unterschied zu when besteht darin, dass die weiteren Argumente in einer Umgebung ausgewertet werden, in der das Symbol it an das Ergebnis des Tests gebunden ist.

> (awhen nil 1 2)
nil

> (awhen t)
nil

> (awhen t 1 2)
2

> (awhen 1 (+ it 2))
3

Das Macro basiert im Wesentlichen auf aif und progn:

(setq awhen
  (mlambda args
    (list
      aif
      (first args)
      (cons progn (rest args))
      nil)))