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%"> </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><destructuring template lambda list></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><destructuring template lambda list></i></p> 79 80 <p>The <i><destructuring template lambda list></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><destructuring template lambda list></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><destructuring template lambda list></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 #<ENVIRONMENT xxx> 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 #<ENVIRONMENT xxx> 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 #<ENVIRONMENT xxx> 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%"> </td> --> 158 </tr> 159 160 <tr height="100%"> 161 <td height="100%"> </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%"> </td> 185 </tr> 186 187 188 189 190 <tr> 191 <td colspan="3" valign="bottom" align="right"> 192 <div class="copyright"> 193 © 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 -->