/ docs / html /
/docs/html/string-template-class.html
  1 <html>
  2  <head>
  3      <title>CL Unification: Class STRING-TEMPLATE</title>
  4      <link rel="stylesheet" href="main.css">
  5  </head>
  6 	
  7  <body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" bgcolor="#ffffff">
  8 
  9  <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" vspace="0" hspace="0">
 10   <tr>
 11   <td colspan="3">
 12    <div class="header"
 13         style="font-family:=Verdana,Arial,Helvetica; font-size: 18px; color: #41286f;">
 14     <strong><i>CL Unification: Class STRING-TEMPLATE</title></i></strong>
 15     <div class="navigation">
 16      <a href="index.html" class="navigation-link">Home</a>
 17       | <a href="unification-package.html" class="navigation-link">Previous</a>
 18       | <a href="index.html" class="navigation-link">Next</a>
 19       | <a href="downloads.html" class="navigation-link">Downloads</a>
 20       |  <a href="links.html" class="navigation-link">Links</a>
 21     </div>
 22    </div>
 23    <div class="black-line"><img src="images/shim.gif" height="1" width="1"></div>
 24    <div class="middle-bar"><img src="images/shim.gif" height="5" width="1"></div>
 25    <div class="black-line"><img src="images/shim.gif" height="1" width="1"></div>
 26   </td>
 27  </tr>
 28 
 29  <tr height="100%">
 30   <td height="100%">&nbsp;</td>
 31   <td valign="top" width="80%" height="100%">
 32 
 33   <div class="content">
 34   <div class="text" style="padding-top: 10px;">
 35 	
 36   <h1><i>Class</i> <strong>STRING-TEMPLATE</strong></h1>
 37 
 38   <h2>Package:</h2>
 39 
 40   <p><code>COMMON-LISP.EXTENSIONS.DATA-AND-CONTROL-FLOW.UNIFICATION</code></p>
 41 
 42 
 43   <h2>Class Precedence List:</h2>
 44 
 45   <p>
 46   STRING-TEMPLATE, VECTOR-TEMPLATE, SEQUENCE-TEMPLATE, ARRAY-TEMPLATE, TYPE-TEMPLATE, TEMPLATE, STANDARD-OBJECT, T.
 47   </p>
 48 
 49   <h2>Known Subclasses:</h2>
 50 
 51   <p>
 52   None.
 53   </p>
 54 
 55 
 56   <h2>Slots:</h2>
 57 
 58   <p>None.</p>
 59 
 60 
 61   <h2>Description:</h2>
 62 
 63   <p>The STRING-TEMPLATE class denotes those object  that are used
 64   to unify against a STRING.</p>
 65 
 66   <h3>Template Syntax:</h3>
 67 
 68   <p>
 69   <pre>
 70   #T(<b>string</b> . <i>&lt;destructuring template lambda list&gt;</i>)
 71   </pre>
 72   </p>
 73 
 74 
 75   <p>The STRING-TEMPLATE syntax denotes a STRING object.  A
 76   STRING-TEMPLATE must be unified against a CHARACTER VECTOR
 77   object. The elements of the string must be unified against the
 78   <i>&lt;destructuring template lambda list&gt;</i></p>
 79 
 80   <p>The <i>&lt;destructuring template lambda list&gt;</i> has a
 81   slight different interpretation in this case, in order to provide
 82   more flexibility to the user. Ordinarily, each component appearing
 83   in a <i>&lt;destructuring template lambda list&gt;</i> is unified
 84   "element-wise" with the underlying SEQUENCE or ARRAY object.  In the
 85   case of a STRING-TEMPLATE, each component of the
 86   <i>&lt;destructuring template lambda list&gt;</i> is allowed to be a
 87   STRING or a STRING-TEMPLATE itself.  The STRING or STRING-TEMPLATE
 88   is unified against a subsequence of the CHARACTER VECTOR.</p>
 89 
 90 
 91 
 92 
 93   
 94 
 95   <h2>Examples:</h2>
 96 
 97   <p>
 98   <pre>
 99   cl-prompt> (setf e (unify "foobar" #T(<b>string</b> "foob" ?x #\r)))
100   #&lt;ENVIRONMENT xxx&gt;
101   
102   cl-prompt> (find-variable-value '?x e)
103   #\a
104 
105   cl-prompt> (setq e (unify "foobar"  #T(<b>string</b> "FOO" #\b #\a #\r)))
106   --> Error: UNIFICATION-FAILURE
107 
108   cl-prompt> (setq e (unify "foobar") #T(<b>string</b> _ _ ?x _ _ _))
109   #&lt;ENVIRONMENT xxx&gt;
110 
111   cl-prompt> (find-variable-value '?x e)
112   #\o
113 
114   cl-prompt> (setq e (unify "foobar" #T(<b>string</b> _ &rest ?x)))
115   #&lt;ENVIRONMENT xxx&gt;
116 
117   cl-prompt> (find-variable-value '?x e)
118   "oobar"
119   </pre>
120   </p>
121 
122 
123   <h2>Affected By:</h2>
124 
125   <p>The value of the variable *UNIFY-STRING-CASE-SENSITIVE-P*.</p>
126 
127 
128   <h2>Exceptional Situations:</h2>
129 
130   <p>Unifying an STRING-TEMPLATE against a non CHARACTER VECTOR object
131   results in an UNIFICATION-FAILURE error being signaled.</p>
132 
133 
134   <h2>See Also:</h2>
135 
136   <p>UNIFY</p>
137 
138 
139   <h2>Notes:</h2>
140 
141   <h3>ARRAY Structural Properties</h3>
142 
143   <p>There is no way to "unify" against structural properties of
144   vectors like fill pointers and displacements.</p>
145 
146   <h3>Current Implementation Note</h3>
147 
148   <p>The STRING-TEMPLATE class and the relevant UNIFY methods have not
149   been implemented yet.</p>
150   
151   <p>The actual semantics of the STRING-TEMPLATE class is not
152   completely clear yet.</p>
153 
154 
155  </td>
156  
157  <!--  <td height="100%">&nbsp;</td> -->
158  </tr>
159 
160  <tr height="100%">
161   <td height="100%">&nbsp;</td>
162   <td valign="top" width="80%" height="100%">
163 
164   <div class="content">
165   <div class="text" style="padding-top: 10px;">
166 
167   <h1>News</h1>
168 
169   <p>News in chronological order, most recent on top.
170   </p>
171 
172   <ul>
173   <li><strong>2004-10-30</strong><br>
174       Completed description.
175   </li>
176 
177   </ul>
178 
179   </div>
180   </div>
181 						
182  </td>
183  
184  <td height="100%">&nbsp;</td>
185  </tr>
186 
187 
188 
189  
190  <tr>
191   <td colspan="3" valign="bottom" align="right">
192   <div class="copyright">
193   &copy; 2003-2004, Marco Antoniotti, all rights reserved.
194   </div>
195   </td>
196  </tr>
197  
198  </table>
199  </body>
200 </html>
201 
202 <!-- end of file -- expression-template-class.html -->