Чтобы составить выражения в последовательное выполнение (сначала сделайте это, затем сделайте это, наконец, верните это), вам нужно заключить их во что-то, если вы не более или менее используете сценарии на верхнем уровне.
самая основная конструкция для этого - progn
, которая оценивает все данные формы в последовательности и, наконец, возвращает значения последней.Многие конструкции в Common Lisp имеют неявное progn
, например, тела функций, тела let и т. Д. Есть также prog1
и prog2
, которые делают то же самое, но возвращают значения первого иливторая форма после оператора, соответственно.
Таким образом, progn
- это то, что вы должны использовать здесь.
Однако, если у вас есть только последующее, никакое другое предложение, вы можете использовать when
вместо if
.When
имеет неявное progn
.Существует также unless
, поскольку, когда у вас есть только предложение else, не имеет значения.
Следует отметить, что существуют другие составные конструкции для других нужд: block
позволяет использовать явную форму return-from
определить значения во время выполнения.Tagbody
позволяет использовать go
, чтобы прыгать в нем (но ничего не возвращает, для этого вам понадобится дополнительный блок).Это в основном полезно для создания новых управляющих структур (например, в макросах).