-
Notifications
You must be signed in to change notification settings - Fork 8
/
clqr-structures.tex
100 lines (92 loc) · 3.49 KB
/
clqr-structures.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
% Copyright (C) 2008, 2009, 2010, 2012, 2014, 2018 Bert Burgemeister
%
% Permission is granted to copy, distribute and/or modify this
% document under the terms of the GNU Free Documentation License,
% Version 1.2; with no Invariant Sections, no Front-Cover Texts and
% no Back-Cover Texts. For details see file COPYING.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Structures}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{LIST}{1cm}
\IT{(\MC*{DEFSTRUCT}
\xorGOO{\VAR{foo}\\
(\VAR{foo\hspace{.5ex}}
\orGOO{%
\xorGOO{%
\kwd{:conc-name}\\
(\kwd{:conc-name } \Op{\NEV{\VAR{slot-prefix}}\DF{\VAR{foo}\LIT{-}}})}{.}\\
\xorGOO{%
\kwd{:constructor}\\
(\kwd{:constructor }
\OP{\NEV{\VAR{maker}}\DF{\LIT{MAKE-}\VAR{foo}}\text{ }
\Op{({\OPn{\NEV{\VAR{ord-$\lambda$}}}})}})}{\}^{\!\!*}}\\
\xorGOO{%
\kwd{:copier}\\
(\kwd{:copier }
\Op{\NEV{\VAR{copier}}\DF{\LIT{COPY-}\VAR{foo}}})}{.}\\
(\kwd{:include\hspace{.5ex}} \NEV{\VAR{struct}}% disabled to save space %\text{ }
\xorGOO{%
\NEV{\VAR{slot}}\\
(\NEV{\VAR{slot}}\text{\hspace{.5ex}} \Op{\VAR{init}% disabled to save space %\text{ }
\orGOO{
\kwd{:type\hspace{.5ex}} \NEV{\VAR{sl-type}}\\
\kwd{:read-only } \NEV{\VAR{b}}}{\}}})\\
}{\}^{\!\!*}})\\
\xorGOO{
(\kwd{:type } \xorGOO{\kwd{list}\\
\kwd{vector}\\
(\kwd{vector }\NEV{\VAR{type}})}{\}})\text{ }
\Op{(\kwd{:initial-offset } \NEV{\VAR{n}})}\\
\xorGOO{
(\kwd{:print-object } \Op{\NEV{\VAR{o-printer}}})\\
(\kwd{:print-function } \Op{\NEV{\VAR{f-printer}}})
}{.}
}{.}\\
\kwd{:named}\\
\xorGOO{%
\kwd{:predicate}\\
(\kwd{:predicate } \Op{\NEV{\VAR{p-name}}\DF{\VAR{foo}\LIT{-P}}})}{.}
}{\}}%
)%
}{\}}
\Op{\NEV{\VAR{doc}}}
\xorGOO{
\VAR{slot}\\
(\VAR{slot } \Op{\VAR{init}\text{ }
\orGOO{
\kwd{:type } \NEV{\VAR{slot-type}}\\
\kwd{:read-only } \NEV{\VAR{bool}}
}{\}}})
}{\}^{\!\!*}}%
)}
{
Define structure \retval{\VAR{foo}} together with functions
\LIT{MAKE-}\VAR{foo}, \LIT{COPY-}\VAR{foo} and
\VAR{foo}\LIT{-P}; and \kwd{setf}able accessors
\VAR{foo}\LIT{-}\VAR{slot}. Instances are of class \VAR{foo} or, if
\kwd{defstruct} option \kwd{:type} is given, of the specified type.
They can be
created by (\LIT{MAKE-}\VAR{foo} \Goos{\kwd{:}\VAR{slot}
\VAR{value}}) or, if \VAR{ord-$\lambda$} (see
page \pageref{section:Functions}) is given, by (\VAR{maker}
\OPn{\VAR{arg}} \Goos{\kwd{:}\VAR{key} \VAR{value}}). In the latter
case, \VAR{arg}s and \kwd{:}\VAR{key}s correspond to the positional
and keyword parameters defined in \VAR{ord-$\lambda$} whose
\VAR{var}s in turn correspond to \VAR{slot}s.
\kwd{:print-object}/\kwd{:print-function} generate a
\GFU{print-object} method for an instance \VAR{bar} of \VAR{foo}
calling (\VAR{o-printer} \VAR{bar} \VAR{stream}) or (\VAR{f-printer}
\VAR{bar} \VAR{stream} \VAR{print-level}), respectively.
If \kwd{:type} without \kwd{:named} is given, no \VAR{foo}\LIT{-P}
is created.
}
\IT{(\FU*{COPY-STRUCTURE} \VAR{structure})}
{
Return \retval{copy of \VAR{structure}} with shared slot values.
}
\end{LIST}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "clqr"
%%% End: