(progn <действие>*)
Функция progn выполняет все действия, заданные в качестве аргументов, и возвращает результат выполнения последнего.
В отличие от progn функция progn$ предназначена для выполнения заданного набора действий над каждым элементом составного поля.
Определение 15.58. Функция progn$
(progn$ <определение-списка> <действие>*)
<определение-списка>::=<составное-поле>| (<переменная-списка> <составное-поле>)
Текущее обрабатываемое поле может быть определено с помощью переменной списка, если она задана, а индекс текущего поля — с помощью переменной <переменная-списка>-index. Значение, возвращаемое функцией progn$, является результатом последнего действия над последним полем составной величины (см. пример 15.23 и рис. 15.20).
Пример 15.23. Использование функции progn$
(progn$ (?field (create$ abc def ghi))
(printout t "—> "?field " "?field-index " <—" crlf))
Рис. 15.20. Использование функции progn$
Функция return прерывает выполняющуюся функцию, цикл, правило, обработчик сообщения и т. д. Если функция return вызывается без аргументов, функция не возвращает никакого значения. Однако если аргумент присутствует, return возвращает результат вычислений, который присваивается значению прерванной функции, цикла или обработчика сообщения.