(defmacro prog2 (form1 result &body body)
`(prog1 (progn ,form1 ,result) ,@body))
+(defmacro prog (inits &rest body )
+ (multiple-value-bind (forms decls docstring) (parse-body body)
+ `(block nil
+ (let ,inits
+ ,@decls
+ (tagbody ,@forms)))))
;;; Go on growing the Lisp language in Ecmalisp, with more high level
multiple-value-call multiple-value-list multiple-value-prog1
nconc nil ninth not nreconc nth nthcdr null numberp or otherwise
package-name package-use-list packagep pairlis parse-integer plusp
- pop prin1-to-string print proclaim prog1 prog2 progn psetq push
+ pop prin1-to-string print proclaim prog prog1 prog2 progn psetq push
quote rassoc read-from-string remove remove-if remove-if-not return
return-from revappend reverse rplaca rplacd second set setf seventh
setq sixth some string string-upcase string= stringp subseq subst