(prog1 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 FORM1 is returned (the other forms' values are thrown away). So it's really syntactic sugar for the form

(let ((var FORM1))
  FORM2
  ...
  FORMn
  var)
(where var is a free variable in all the FORMs).

Usually progn (which returns the value of FORMn) is used (often implicitly, as in the (let ...) form above). prog1 is Lisp-speak for "hang on to this value for a moment, while I go do something else".

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