aand

Bei aand handelt es sich um ein anaphorisches Macro, dass eine Und-Verknüpfung mehrerer Ausdrücke durchführt.

Die Ausdrücke werden von links nach rechts einer nach dem anderen ausgewertet, bis sich entweder nil ergibt oder alle Ausdrücke betrachtet wurden. Der letzte Wert wird zum Gesamtergebnis.

Der Unterschied zu and besteht darin, dass das Symbol it an den Wert des vorherigen Ausdrucks gebunden ist.

Das Macro basiert im Wesentlichen auf aif.

(setq aand
  (mlambda args
    (cond
      ((null? args) t)
      ((single? args) (first args))
      (t
        (list
          aif
          (first args)
          (cons aand (rest args))
          nil)))))