Tagbody
對於組表單中的大量控制, tagbody 特殊運算子可能非常有用。一個內部的形式 tagbody 形式要麼是去標籤 (這只是符號或整數)或執行的形式。在標籤體內, go 特殊運算子用於將執行轉移到新位置。這種型別的程式設計可以被認為是相當低階的,因為它允許任意執行路徑。以下是作為標記實體實現 for 迴圈時的詳細示例 :
(let (x) ; for (x = 0; x < 5; x++) { print(hello); }
(tagbody
(setq x 0)
prologue
(unless (< x 5)
(go end))
begin
(print (list 'hello x))
epilogue
(incf x)
(go prologue)
end))
雖然 tagbody 和 go 不常用,可能是由於“GOTO 被認為是有害的”,但在實現複雜的控制結構(如狀態機)時可能會有所幫助。許多迭代構造也擴充套件為隱式標記體。例如, dotimes 的主體被指定為一系列標籤和形式。