/ docs / html /
docs/html/list-template-class.html
  1 <html>
  2  <head>
  3      <title>CL Unification: Class LIST-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 LIST-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>LIST-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   LIST-TEMPLATE, SEQUENCE-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 LIST-TEMPLATE class denotes those object that are used
 64   to unify against a LIST.</p>
 65 
 66 
 67   <h3>Template Syntax:</h3>
 68 
 69   <p>
 70   <pre>
 71   #T(<b>list</b> . <i>&lt;destructuring template lambda list&gt;</i>)
 72   </pre>
 73   </p>
 74 
 75   <p>The LIST-TEMPLATE syntax denotes a LIST object.  A
 76   LIST-TEMPLATE must be unified against a LIST object. The elements
 77   of the list must be unified against the
 78   <i>&lt;destructuring template lambda list&gt;</i>
 79   
 80 
 81   <h2>Examples:</h2>
 82 
 83   <p>
 84   <pre>
 85   cl-prompt> (setf e (unify '(0 1 42 3 4 5) #T(<b>list</b> 0 1 ?x 3 4 5)))
 86   #&lt;ENVIRONMENT xxx&gt;
 87   
 88   cl-prompt> (find-variable-value '?x e)
 89   42
 90   T
 91 
 92   cl-prompt> (setq e (unify '(0 1 42 3 4 5)  #T(<b>list</b> 0 1 "FOO" 3 4 5)))
 93   --> Error: UNIFICATION-FAILURE
 94 
 95   cl-prompt> (setq e (unify '("foo" "bar" 42)) #T(<b>list</b> _ _ ?x))
 96   #&lt;ENVIRONMENT xxx&gt;
 97 
 98   cl-prompt> (find-variable-value '?x e)
 99   42
100   T
101 
102   cl-prompt> (setq e (unify #(1 2 3) #T(<b>list</b> _ &rest ?x)))
103   --> Error: UNIFICATION-FAILURE
104 
105   cl-prompt> (setq e (unify (list "foo" '?foo 42)) #T(<b>list</b> _ 33 ?x))
106   #&lt;ENVIRONMENT xxx&gt;
107 
108   cl-prompt> (find-variable-value '?x e)
109   42
110   T
111 
112   cl-prompt> (find-variable-value '?foo e)
113   33
114   T
115   </pre>
116   </p>
117 
118 
119   <h2>Affected By:</h2>
120 
121   <p>None.</p>
122 
123 
124   <h2>Exceptional Situations:</h2>
125 
126   <p>Unifying a LIST-TEMPLATE against a non-LIST object results in
127   an UNIFICATION-FAILURE error being signaled.</p>
128 
129 
130   <h2>See Also:</h2>
131 
132   <p>UNIFY</p>
133 
134 
135   <h2>Notes:</h2>
136 
137   <p>Unifying a LIST-TEMPLATE against a non-proper or circular list has undefined behavior.</p>
138 
139   <p>The LIST-TEMPLATE class is the only one that is really needed in
140   order not to implode the overall unification machinery.  But, since
141   it is needed, then it is worthwhile to build the whole template
142   hierarchy.</p>
143 
144 
145  </td>
146  
147  <!--  <td height="100%">&nbsp;</td> -->
148  </tr>
149 
150  <tr height="100%">
151   <td height="100%">&nbsp;</td>
152   <td valign="top" width="80%" height="100%">
153 
154   <div class="content">
155   <div class="text" style="padding-top: 10px;">
156 
157   <h1>News</h1>
158 
159   <p>News in chronological order, most recent on top.
160   </p>
161 
162   <ul>
163   <li><strong>2004-10-30</strong><br>
164       Completed description.
165   </li>
166 
167   </ul>
168 
169   </div>
170   </div>
171 						
172  </td>
173  
174  <td height="100%">&nbsp;</td>
175  </tr>
176 
177 
178 
179  
180  <tr>
181   <td colspan="3" valign="bottom" align="right">
182   <div class="copyright">
183   &copy; 2003-2004, Marco Antoniotti, all rights reserved.
184   </div>
185   </td>
186  </tr>
187  
188  </table>
189  </body>
190 </html>
191 
192 <!-- end of file -- expression-template-class.html -->