1 % Copyright (C) 2008, 2009, 2010, 2011, 2012, 2014 Bert Burgemeister
3 % Permission is granted to copy, distribute and/or modify this
4 % document under the terms of the GNU Free Documentation License,
5 % Version 1.2; with no Invariant Sections, no Front-Cover Texts and
6 % no Back-Cover Texts. For details see file COPYING.
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14 \subsection{Predicates
}
15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18 \IT{\arrGOO{(
\FU*
{CONSP
} \VAR{ foo
})\\
19 (
\FU*
{LISTP
} \VAR{ foo
})
}{.
}}
21 Return
\retval{\T} if
\VAR{foo
} is of indicated type.
24 \IT{\arrGOO{(
\FU*
{ENDP
} \VAR{ list
})\\
25 (
\FU*
{NULL
} \VAR{ foo
})
}{.
}\qquad\qquad}
27 Return
\retval{\T} if
\VAR{list
}/
\VAR{foo
} is
\NIL.
30 \IT{(
\FU*
{ATOM
} \VAR{foo
})
\qquad}
31 {Return
\retval{\T} if
\VAR{foo
} is not a
35 \IT{(
\FU*
{TAILP
} \VAR{foo
} \VAR{list
})
}
37 Return
\retval{\T} if
\VAR{foo
} is a tail of
\VAR{list
}.
40 \IT{(
\FU*
{MEMBER
} \VAR{foo
} \VAR{list
}
42 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
43 \kwd{:test-not
} \VAR{ function
}}{.
}\\
44 \kwd{:key
} \VAR{ function
}}{\
}})
}
46 Return
\retval{tail of
\VAR{list
}} starting with
47 its first element matching
\VAR{foo
}. Return
\retval{\NIL} if
48 there is no such element.
51 \IT{(
\xorGOO{\FU*
{MEMBER-IF
}\\
52 \FU*
{MEMBER-IF-NOT
}}{\
}}
54 \Op{\kwd{:key
} \VAR{function
}})
}
56 Return
\retval{tail of
\VAR{list
}} starting with
57 its first element satisfying
\VAR{test
}. Return
\retval{\NIL} if
58 there is no such element.
61 \IT{(
\FU*
{SUBSETP
} \VAR{list-a
} \VAR{list-b
}
63 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
64 \kwd{:test-not
} \VAR{ function
}}{.
}\\
65 \kwd{:key
} \VAR{ function
}}{\
}})
}
67 Return
\retval{\T} if
\VAR{list-a
} is a subset of
74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
79 \IT{(
\FU*
{CONS
} \VAR{foo
} \VAR{bar
})
}
81 Return new cons
\retval{(
\VAR{foo
} \kwd {.
} \VAR{bar
})
}.
84 \IT{(
\FU*
{LIST
} \OPn{\VAR{foo
}})
\qquad\qquad}
85 {Return
\retval{list of
\VAR{foo
}s
}.
88 \IT{(
\FU*
{LIST
\A} \RP{\VAR{foo
}})
}
89 {Return
\retval{list of
\VAR{foo
}s
}
90 with last
\VAR{foo
} becoming cdr of last cons. Return
91 \retval{\VAR{foo
}} if only one
\VAR{foo
} given.
94 \IT{(
\FU*
{MAKE-LIST
} \VAR{num
} \Op{\kwd{:initial-element
}
97 New
\retval{list
} with
\VAR{num
} elements set to
\VAR{foo
}.
100 \IT{(
\FU*
{LIST-LENGTH
} \VAR{list
})
}
101 {\retval{Length
} of
\VAR{list
};
102 \retval{\NIL} for circular
\VAR{list
}.
105 \IT{(
\FU*
{CAR
} \VAR{list
})
\qquad\qquad}
107 \retval{Car of
\VAR{list
}} or
\retval{\NIL} if
\VAR{list
} is
108 \NIL.
\kwd{SETF
}able.
111 \IT{\arrGOO{(
\FU*
{CDR
} \VAR{ list
})
\qquad\\
112 (
\FU*
{REST
} \VAR{ list
})
}{.
}}
114 \retval{Cdr of
\VAR{list
}} or
\retval{\NIL} if
\VAR{list
}
115 is
\NIL.
\kwd{SETF
}able.
118 \IT{(
\FU*
{NTHCDR
} \VAR{n list
})
}
119 {Return
\retval{tail of
\VAR{list
}} after calling
\FU{cdr
} \VAR{n
} times.
122 \IT{(
\Goo{\FU*
{FIRST
}\XOR\FU*
{SECOND
}\XOR\FU*
{THIRD
}\XOR\FU*
{FOURTH
}\XOR\FU*
{FIFTH
}\XOR\FU*
{SIXTH
}\XOR\dots\XOR\FU*
{NINTH
}\XOR\FU*
{TENTH
}}
127 Return
\retval{nth element of
\VAR{list
}} if any,
128 or
\retval{\NIL} otherwise.
\kwd{SETF
}able.
131 \IT{(
\FU*
{NTH
} \VAR{n list
})
}
133 Zero-indexed
\retval{\VAR{n
}th element
} of
\VAR{list
}.
\kwd{setf
}able.
136 \IT{(
\FU{C
}\VAR{X
}\kwd{R
} \VAR{list
})
}
142 With
\VAR{X
} being one to four
143 \kwd{a
}s and
\kwd{d
}s representing
\FU{CAR
}s and
\FU{CDR
}s, e.g.
144 (
\FU{CADR
} \VAR{bar
}) is equivalent to (
\FU{CAR
} (
\FU{CDR
}
149 \IT{(
\FU*
{LAST
} \VAR{list
} \Op{\VAR{num
}\DF{\LIT{1}}})
}
151 Return list of
\retval{last
\VAR{num
}
152 conses
} of
\VAR{list
}.
155 \IT{(
\xorGOO{\FU*
{BUTLAST
} \VAR{list
}\\
156 \FU*
{NBUTLAST
} \DES{\VAR{list
}}}{\
}}
157 \Op{\VAR{num
}\DF{\LIT{1}}})
}
159 \retval{\VAR{list
}} excluding last
\VAR{num
}
163 \IT{(
\xorGOO{\FU*
{RPLACA
}\\
164 \FU*
{RPLACD
}}{\
}} \DES{\VAR{cons
}} \VAR{object
})
}
166 Replace car, or cdr, respectively, of
\retval{\VAR{cons
}} with
\VAR{object
}.
169 \IT{(
\FU*
{LDIFF
} \VAR{list
} \VAR{foo
})
}
171 If
\VAR{foo
} is a tail of
\VAR{list
}, return
\retval{preceding
172 part of
\VAR{list
}}. Otherwise return
\retval{\VAR{list
}}.
175 \IT{(
\FU*
{ADJOIN
} \VAR{foo
} \VAR{list
}
177 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
178 \kwd{:test-not
} \VAR{ function
}}{.
}\\
179 \kwd{:key
} \VAR{ function
}}{\
}})
}
180 {Return
\retval{\VAR{list
}} if
\VAR{foo
} is
181 already member of
\VAR{list
}. If not, return
\retval{(
\FU{CONS
}
182 \VAR{foo
} \VAR{list
})
}.
185 \IT{(
\MC*
{POP
} \DES{\VAR{place
}})
}
187 Set
\VAR{place
} to (
\FU{CDR
} \VAR{place
}), return
188 \retval{(
\FU{CAR
} \VAR{place
})
}.
191 \IT{(
\MC*
{PUSH
} \VAR{foo
} \DES{\VAR{place
}})
}
193 Set
\VAR{place
} to
\retval{(
\FU{cons
} \VAR{foo
} \VAR{place
})
}.
196 \IT{(
\MC*
{PUSHNEW
} \VAR{foo
} \DES{\VAR{place
}}
198 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
199 \kwd{:test-not
} \VAR{ function
}}{.
}\\
200 \kwd{:key
} \VAR{ function
}}{\
}})
}
202 Set
\VAR{place
} to
\retval{(
\FU{adjoin
} \VAR{foo
} \VAR{place
})
}.
205 \IT{\arrGOO{(
\FU*
{APPEND
} \Op{\OPn{\VAR{proper-list
}}
206 \VAR{ foo
}\DF{\NIL}})\\
207 (
\FU*
{NCONC
} \Op{\OPn{\DES{\VAR{non-circular-list
}}}
208 \VAR{ foo
}\DF{\NIL}})
}{.
}}
210 Return
\retval{concatenated list
} or, with only one argument,
211 \retval{\VAR{foo
}}.
\VAR{foo
} can be of any type.
214 \IT{\arrGOO{(
\FU*
{REVAPPEND
} \VAR{ list
} \VAR{ foo
})\\
216 \DES{\VAR{list
}} \VAR{ foo
})
}{.
}}
218 Return
\retval{concatenated list
} after reversing order in
222 \IT{(
\xorGOO{\FU*
{MAPCAR
}\\
223 \FU*
{MAPLIST
}}{\
}} \VAR{function
} \RP{\VAR{list
}})
}
225 Return
\retval{list of return values
} of
\VAR{function
}
226 successively invoked with corresponding arguments, either cars or
227 cdrs, respectively, from each
\VAR{list
}.
230 \IT{(
\xorGOO{\FU*
{MAPCAN
}\\
231 \FU*
{MAPCON
}}{\
}} \VAR{function
} \RP{\VAR{\DES{list
}}})
}
232 % Example of list argument being modified:
233 % (let ((list '((1 2) (3 4))))
234 % (mapcan #'identity list)
237 Return list of
\retval{concatenated return values
} of
238 \VAR{function
} successively invoked with corresponding arguments,
239 either cars or cdrs, respectively, from each
240 \VAR{list
}.
\VAR{function
} should return a list.
243 \IT{(
\xorGOO{\FU*
{MAPC
}\\
244 \FU*
{MAPL
}}{\
}} \VAR{function
} \RP{\VAR{list
}})
}
246 Return
\retval{first
\VAR{list
}} after successively applying
247 \VAR{function
} to corresponding arguments, either cars or cdrs,
248 respectively, from each
\VAR{list
}.
\VAR{function
} should have
252 \IT{(
\FU*
{COPY-LIST
} \VAR{list
})
}
254 Return
\retval{copy
} of
\VAR{list
} with shared elements.
260 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261 \subsection{Association Lists
}
262 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
263 \label{section:Association Lists
}
266 \IT{(
\FU*
{PAIRLIS
} \VAR{keys
} \VAR{values
} \Op{\VAR{alist
}\DF{\NIL}})
}
268 Prepend to
\retval{\VAR{alist
}} an association list made from
269 lists
\VAR{keys
} and
\VAR{values
}.
272 \IT{(
\FU*
{ACONS
} \VAR{key
} \VAR{value
} \VAR{alist
})
}
274 Return
\retval{\VAR{alist
}} with a (
\VAR{key
} \kwd{.
} \VAR{value
})
278 \IT{\arrGOO{(
\xorGOO{\FU*
{ASSOC
}\\
280 \VAR{ foo
} \VAR{ alist
}
282 \kwd{:test
} \VAR{ test
}\DF{\kwd{\#'eql
}}\\
283 \kwd{:test-not
} \VAR{ test
}}{.
}\\
284 \kwd{:key
} \VAR{ function
}
286 (
\xorGOO{\FU*
{ASSOC-IF
}\Op{\kwd{-NOT
}}\\
287 \FU*
{RASSOC-IF
}\Op{\kwd{-NOT
}}}{\
}} \VAR{ test
} \VAR{ alist
}
288 \Op{\kwd{:key
} \VAR{ function
}})
}{.
}}
289 {\index{ASSOC-IF-NOT
}\index{RASSOC-IF-NOT
}%
290 First
\retval{cons
} whose car, or cdr, respectively, satisfies
294 \IT{(
\FU*
{COPY-ALIST
} \VAR{alist
})
}
296 Return
\retval{copy
} of
\VAR{alist
}.
302 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
304 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
307 \IT{(
\FU*
{TREE-EQUAL
} \VAR{foo
} \VAR{bar
}
308 \xorGOO{\kwd{:test
} \VAR{ test
}\DF{\kwd{\#'eql
}}\\
309 \kwd{:test-not
} \VAR{ test
}}{\
}})
}
311 Return
\retval{\T} if trees
\VAR{foo
} and
\VAR{bar
} have same
312 shape and leaves satisfying
\VAR{test
}.
315 \IT{(
\xorGOO{\FU*
{SUBST
} \VAR{ new
} \VAR{ old
} \VAR{tree
}\\
316 \FU*
{NSUBST
} \VAR{ new
} \VAR{ old
} \DES{\VAR{tree
}}}{\
}}
318 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
319 \kwd{:test-not
} \VAR{ function
}}{.
}\\
320 \kwd{:key
} \VAR{ function
}%
323 Make
\retval{copy of
\VAR{tree
}} with each subtree or leaf
324 matching
\VAR{old
} replaced by
\VAR{new
}.
327 \IT{(
\xorGOO{\FU{SUBST-IF
\Op{-NOT
}} \VAR{ new
} \VAR{ test
} \VAR{tree
}\\
328 \FU{NSUBST-IF
\Op{-NOT
}} \VAR{ new
} \VAR{ test
} \DES{\VAR{tree
}}}{\
}}
329 \Op{\kwd{:key
} \VAR{function
}})
}
332 \index{SUBST-IF-NOT
}%
334 \index{NSUBST-IF-NOT
}%
335 Make
\retval{copy of
\VAR{tree
}} with each subtree or leaf
336 satisfying
\VAR{test
} replaced by
\VAR{new
}.
339 \IT{(
\xorGOO{\FU*
{SUBLIS
} \VAR{ association-list
} \VAR{tree
} \\
340 \FU*
{NSUBLIS
} \VAR{ association-list
} \DES{\VAR{tree
}} }{\
}}
342 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
343 \kwd{:test-not
} \VAR{ function
}}{.
}\\
344 \kwd{:key
} \VAR{ function
}%
347 Make
\retval{copy of
\VAR{tree
}} with each subtree or leaf matching
348 a key in
\VAR{association-list
} replaced by that key's value.
351 \IT{(
\FU*
{COPY-TREE
} \VAR{tree
})
}
353 \retval{Copy of
\VAR{tree
}} with same shape and leaves.
359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
361 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367 \FU*
{SET-DIFFERENCE
}\\
369 \FU*
{SET-EXCLUSIVE-OR
}%
370 }{\
}} \VAR{ a
} \VAR{ b
}\\
372 \FU*
{NINTERSECTION
}\\
373 \FU*
{NSET-DIFFERENCE
}%
374 }{\
}} \text{ }\DES{\VAR{a
}}\text{ } \VAR{b
}\\
377 \FU*
{NSET-EXCLUSIVE-OR
}%
378 }{\
}} \text{ }\DES{\VAR{a
}}\text{ } \DES{\VAR{b
}}\text{ }
381 \kwd{:test
} \VAR{ function
}\DF{\kwd{\#'eql
}}\\
382 \kwd{:test-not
} \VAR{ function
}}{.
}\\
383 \kwd{:key
} \VAR{ function
}}{\
}})
}
385 Return
\retval{$a
\cap b$
},
\retval{$a
\setminus b$
},
\retval{$a
\cup b$
}, or
386 \retval{$a\,
\triangle\, b$
}, respectively, of lists
\VAR{a
} and
\VAR{b
}.
394 %%% TeX-master: "clqr"