User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:macros:with-condition-restarts [2019/07/14 17:00]
cl:macros:with-condition-restarts [2019/10/19 05:00] (current)
Line 1: Line 1:
 +====== Macro WITH-CONDITION-RESTARTS ======
 +
 +====Syntax====
 +  * **with-condition-restarts** //​condition-form restarts-form form''​*''//​ → //​result}''​*''//​
 +
 +====Arguments and Values====
 +  * //​condition-form//​ - a //​[[CL:​Glossary:​form]]//;​ //​[[CL:​Glossary:​evaluate|evaluated]]//​ to produce a //​condition//​.
 +  * //​condition//​ - a //​[[CL:​Glossary:​condition]]//​ //​[[CL:​Glossary:​object]]//​ resulting from the //​[[CL:​Glossary:​evaluation]]//​ of //​condition-form//​.
 +  * //​restart-form//​ - a //​[[CL:​Glossary:​form]]//;​ //​[[CL:​Glossary:​evaluate|evaluated]]//​ to produce a //​restart-list//​.
 +  * //​restart-list//​ - a //​[[CL:​Glossary:​list]]//​ of //​[[CL:​Glossary:​restart]]//​ //​[[CL:​Glossary:​object|objects]]//​ resulting from the //​[[CL:​Glossary:​evaluation]]//​ of //​restart-form//​.
 +  * //forms// - an //​[[CL:​Glossary:​implicit progn]]//; evaluated..
 +  * //results// - the //​[[CL:​Glossary:​values]]//​ returned by //forms//.
 +
 +====Description====
 +First, the //​condition-form//​ and //​restarts-form//​ are //​[[CL:​Glossary:​evaluate|evaluated]]//​ in normal left-to-right order; the //​[[CL:​Glossary:​primary value|primary values]]// yielded by these //​[[CL:​Glossary:​evaluation|evaluations]]//​ are respectively called the //​condition//​ and the //​restart-list//​.
 +
 +Next, the //forms// are //​[[CL:​Glossary:​evaluate|evaluated]]//​ in a //​[[CL:​Glossary:​dynamic environment]]//​ in which each //​[[CL:​Glossary:​restart]]//​ in //​restart-list//​ is associated with the //​condition//​. see section {\secref\AssocRestartWithCond}.
 +
 +====Examples====
 +None.
 +
 +====Side Effects====
 +None.
 +
 +====Affected By====
 +None.
 +
 +====Exceptional Situations====
 +None.
 +
 +====See Also====
 +**[[CL:​Macros:​restart-case|Macro RESTART-CASE]]**
 +
 +====Notes====
 +Usually this //​[[CL:​Glossary:​macro]]//​ is not used explicitly in code, since **[[CL:​Macros:​restart-case]]** handles most of the common cases in a way that is syntactically more concise.
 +
 +\issue{CONDITION-RESTARTS:​PERMIT-ASSOCIATION}