1
0
Fork 0
cl-sites/HyperSpec-7-0/HyperSpec/Body/22_cib.htm

65 lines
6.1 KiB
HTML
Raw Normal View History

2024-04-01 10:24:07 +02:00
<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
<HTML>
<HEAD>
<TITLE>CLHS: Section 22.3.9.2</TITLE>
<LINK HREF="../Data/clhs.css" REL="stylesheet" TYPE="text/css" />
<META HTTP-EQUIV="Author" CONTENT="Kent M. Pitman">
<META HTTP-EQUIV="Organization" CONTENT="LispWorks Ltd.">
<LINK REL=TOP HREF="../Front/index.htm">
<LINK REL=COPYRIGHT HREF="../Front/Help.htm#Legal">
<LINK REL=DISCLAIMER HREF="../Front/Help.htm#Disclaimer">
<LINK REL=PREV HREF="22_cia.htm">
<LINK REL=UP HREF="22_ci.htm">
<LINK REL=NEXT HREF="22_cic.htm">
</HEAD>
<BODY>
<H1><A REV=MADE HREF="http://www.lispworks.com/"><IMG WIDTH=80 HEIGHT=65 ALT="[LISPWORKS]" SRC="../Graphics/LWSmall.gif" ALIGN=Bottom></A><A REL=TOP HREF="../Front/index.htm"><IMG WIDTH=237 HEIGHT=65 ALT="[Common Lisp HyperSpec (TM)]" SRC="../Graphics/CLHS_Sm.gif" ALIGN=Bottom></A> <A REL=PREV HREF="22_cia.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="22_ci.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="22_cic.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<H2>
22.3.9.2 Tilde Circumflex: Escape Upward</H2> <P>
<TT>~^</TT> <P>
This is an escape construct. If there are no more arguments remaining to be processed, then the immediately enclosing <TT>~</TT>{<TT></TT> or <TT>~&lt;</TT> construct is terminated. If there is no such enclosing construct, then the entire formatting operation is terminated. In the <TT>~&lt;</TT> case, the formatting is performed, but no more segments are processed before doing the justification. <TT>~^</TT> may appear anywhere in a <TT>~</TT>{<TT></TT> construct. <P>
<PRE>
(setq donestr &quot;Done.~^ ~D warning~:P.~^ ~D error~:P.&quot;)
=&gt; &quot;Done.~^ ~D warning~:P.~^ ~D error~:P.&quot;
(format nil donestr) =&gt; &quot;Done.&quot;
(format nil donestr 3) =&gt; &quot;Done. 3 warnings.&quot;
(format nil donestr 1 5) =&gt; &quot;Done. 1 warning. 5 errors.&quot;
</PRE>
</TT> <P>
If a prefix parameter is given, then termination occurs if the parameter is zero. (Hence <TT>~^</TT> is equivalent to <TT>~#^</TT>.) If two parameters are given, termination occurs if they are equal. If three parameters are given, termination occurs if the first is less than or equal to the second and the second is less than or equal to the third. Of course, this is useless if all the prefix parameters are constants; at least one of them should be a <TT>#</TT> or a <TT>V</TT> parameter. <P>
If <TT>~^</TT> is used within a <TT>~:</TT>{<TT></TT> construct, then it terminates the current iteration step because in the standard case it tests for remaining arguments of the current step only; the next iteration step commences immediately. <TT>~:^</TT> is used to terminate the iteration process. <TT>~:^</TT> may be used only if the command it would terminate is <TT>~:</TT>{<TT></TT> or <TT>~:@</TT>{<TT></TT>. The entire iteration process is terminated if and only if the sublist that is supplying the arguments for the current iteration step is the last sublist in the case of <TT>~:</TT>{<TT></TT>, or the last <A REL=DEFINITION HREF="f_format.htm#format"><B>format</B></A> argument in the case of <TT>~:@</TT>{<TT></TT>. <TT>~:^</TT> is not equivalent to <TT>~#:^</TT>; the latter terminates the entire iteration if and only if no arguments remain for the current iteration step. For example: <P>
<PRE>
(format nil &quot;~:{ ~@?~:^ ...~} &quot; '((&quot;a&quot;) (&quot;b&quot;))) =&gt; &quot;a...b&quot;
</PRE>
</TT> <P>
If <TT>~^</TT> appears within a control string being processed under the control of a <TT>~?</TT> directive, but not within any <TT>~</TT>{<TT></TT> or <TT>~&lt;</TT> construct within that string, then the string being processed will be terminated, thereby ending processing of the <TT>~?</TT> directive. Processing then continues within the string containing the <TT>~?</TT> directive at the point following that directive. <P>
If <TT>~^</TT> appears within a <TT>~[</TT> or <TT>~(</TT> construct, then all the commands up to the <TT>~^</TT> are properly selected or case-converted, the <TT>~[</TT> or <TT>~(</TT> processing is terminated, and the outward search continues for a <TT>~</TT>{<TT></TT> or <TT>~&lt;</TT> construct to be terminated. For example: <P>
<PRE>
(setq tellstr &quot;~@(~@[~R~]~^ ~A!~)&quot;)
=&gt; &quot;~@(~@[~R~]~^ ~A!~)&quot;
(format nil tellstr 23) =&gt; &quot;Twenty-three!&quot;
(format nil tellstr nil &quot;losers&quot;) =&gt; &quot; Losers!&quot;
(format nil tellstr 23 &quot;losers&quot;) =&gt; &quot;Twenty-three losers!&quot;
</PRE>
</TT> <P>
Following are examples of the use of <TT>~^</TT> within a <TT>~&lt;</TT> construct. <P>
<PRE>
(format nil &quot;~15&lt;~S~;~^~S~;~^~S~&gt;&quot; 'foo)
=&gt; &quot; FOO&quot;
(format nil &quot;~15&lt;~S~;~^~S~;~^~S~&gt;&quot; 'foo 'bar)
=&gt; &quot;FOO BAR&quot;
(format nil &quot;~15&lt;~S~;~^~S~;~^~S~&gt;&quot; 'foo 'bar 'baz)
=&gt; &quot;FOO BAR BAZ&quot;
</PRE>
</TT> <P>
<P><HR>The following <A REL=META HREF="../Front/X3J13Iss.htm">X3J13 cleanup issue</A>, <I>not part of the specification</I>, applies to this section:<P><UL><LI> <A REL=CHILD HREF="../Issues/iss165.htm">FORMAT-COLON-UPARROW-SCOPE</A><P></UL><HR>
<A REL=NAVIGATOR HREF="../Front/StartPts.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Starting Points]" SRC="../Graphics/StartPts.gif" ALIGN=Bottom></A><A REL=TOC HREF="../Front/Contents.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Contents]" SRC="../Graphics/Contents.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Master.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Index]" SRC="../Graphics/Index.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Symbol.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Symbols]" SRC="../Graphics/Symbols.gif" ALIGN=Bottom></A><A REL=GLOSSARY HREF="../Body/26_a.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Glossary]" SRC="../Graphics/Glossary.gif" ALIGN=Bottom></A><A HREF="../Front/X3J13Iss.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Issues]" SRC="../Graphics/Issues.gif" ALIGN=Bottom></A><BR>
<A REL=COPYRIGHT HREF="../Front/Help.htm#Legal"><I>Copyright 1996-2005, LispWorks Ltd. All rights reserved.</I></A><P>
</BODY>
</HTML>