(prog2 FORM1 FORM2 ... FORMn) is a special form in Common Lisp (and other Lisps, including Emacs Lisp but not Scheme). The FORMs are executed in order, then the value(s) computed by FORM2 is returned (the other forms' values are thrown away). So it's really syntactic sugar for the form

(progn
  FORM1
  (prog1
    FORM2
    ...
    FORMn))
(making use of the somewhat more "natural" prog1 and progn).

prog2 is only very rarely useful. Which probably explains why even Common Lisp didn't bother to add prog3,...,prog17, à la caar,caddar,caddr,...

Log in or register to write something here or to contact authors.