A progn object describes a sequence of statements (code objects) from which the last must be a function object. The return value of the progn (as a function) is the return value of the last function object.
The execution of the progn fails immediately when one of the statements or the terminating function fails.
Progn (including its name) is inspired by LISP. See also class and, class block and class when.
|any
...<-members
is empty, fail with the error last_is_no_function. Otherwise push a
variable frame to limit the scope of a local
var->assign,
and execute the statements. Stop with failure if a statement fails.
Finally evaluate the last element if it is a function and return either
the last element or the result of the evaluation.