1 % Copyright (C) 2008 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 or any later version published by the Free Software
6 % Foundation; with no Invariant Sections, no Front-Cover Texts and
7 % no Back-Cover Texts. For details see file COPYING.
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15 \subsection{Predicates
}
16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
20 \IT{\arrGOO{(
\FU{\boldmath$=$
}\RP{\VAR{
22 (
\FU{\boldmath$/=$
}\RP{\VAR{ number
}})
}{.
}}
26 Return
\retval{\T} if all
\VAR{number
}s, or
27 none, respectively, are equal.
30 \IT{\arrGOO{(
\FU{\boldmath$>$
}\RP{\VAR{
31 number
}})\\(
\FU{\boldmath$>=$
}\RP{\VAR{
32 number
}})\\(
\FU{\boldmath$<$
}\RP{\VAR{
33 number
}})\\(
\FU{\boldmath$<=$
}\RP{\VAR{ number
}})
}{.
}}
39 Return
\retval{\T} if
\VAR{number
}s are
40 monotonically decreasing, monotonically non-increasing,
41 monotonically increasing, or monotonically non-decreasing, respectively.
44 \IT{\arrGOO{(
\FU*
{MINUSP
} \VAR{ a
})\\
45 (
\FU*
{ZEROP
} \VAR{ a
})\\
49 Return
\retval{\T} if $a <
0$, $a =
0$, or $a >
0$, respectively.
52 \IT{\arrGOO{(
\FU*
{EVENP
} \VAR{integer
})\\
53 (
\FU*
{ODDP
} \VAR{integer
})
}{\
}}}
55 Return
\retval{\T} if
\VAR{integer
} is even or odd, respectively.
58 \IT{\arrGOO{(
\FU*
{NUMBERP
} \VAR{ foo
})\\
59 (
\FU*
{INTEGERP
} \VAR{ foo
})\\
60 (
\FU*
{RATIONALP
} \VAR{ foo
})\\
61 (
\FU*
{FLOATP
} \VAR{ foo
})\\
62 (
\FU*
{REALP
} \VAR{ foo
})\\
63 (
\FU*
{COMPLEXP
} \VAR{ foo
})\\
64 (
\FU*
{RANDOM-STATE-P
} \VAR{ foo
})
67 \retval{\T} if
\VAR{foo
} is of
71 \IT{(
\FU*
{LOGBITP
} \VAR{i
} \VAR{integer
})
}
73 \retval{\T} if zero-indexed
\VAR{i
}th bit of
\VAR{integer
} is set.
79 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
80 \subsection{Numeric Functions
}
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
85 \IT{(
\FU*
{ABS
} \VAR{n
})
}
90 \IT{\arrGOO{(
\FU*
{+
} \OPn{\VAR{ a
}})\\
91 (
\FU*
{*
} \OPn{\VAR{ a
}})
}{.
}}
93 Return
\retval{$
\sum{a
}$
} or
\retval{$
\prod{a
}$
}, respectively. Without any
94 \VAR{a
}s, return
\retval{0} or
\retval{1}, respectively.
97 \IT{\arrGOO{(
\FU*
{--
} \VAR{ a
}\OPn{\VAR{ b
}})\\
101 Return
\retval{$a-
\sum{b
}$
} or
\retval{$a/
\prod{b
}$
}, respectively. Without any
102 \VAR{b
}s, return
\retval{$-a$
} or
\retval{$
1/a$
}, respectively.
105 \IT{\arrGOO{(
\FU*
{1+
} \VAR{ a
})\\(
\FU*
{1--
} \VAR{ a
})
}{.
}}
106 {Return
\retval{$a+
1$
} or
107 \retval{$a-
1$
}, respectively.
110 \IT{(
\xorGOO{\SF*
{INCF
}\\
\SF*
{DECF
}}{\
}} \VAR{place
}
111 \Op{\VAR{delta
}\DF{1}})
}
114 decrement
\VAR{place
} by
\VAR{delta
} returning
\retval{new value
}.
117 \IT{(
\FU*
{EXP
} \VAR{p
})
}
118 {Return
\retval{$
\mbox{e
}^p$
}.
121 \IT{(
\FU*
{EXPT
} \VAR{b
} \VAR{p
})
}
122 {Return
\retval{$b^p$
}.
125 \IT{(
\FU*
{LOG
} \VAR{a
} \Op{\VAR{b
}})
}
127 Return
\retval{$
\log_b a$
} or,
128 without
\VAR{b
},
\retval{$
\ln a$
}.
131 \IT{\arrGOO{(
\FU*
{SQRT
} \VAR{ n
})\\
132 (
\FU*
{ISQRT
} \VAR{ n
})
}{.
}}
134 Return, in complex or natural numbers, respectively, $
\sqrt{n
}$.
137 \IT{\arrGOO{(
\FU*
{LCM
} \OPn{\VAR{ integer
}}\DF{1})\\
138 (
\FU*
{GCD
} \OPn{\VAR{ integer
}})
}{.
}}
140 \retval{Least common multiple
} or
\retval{greatest common
141 denominator
}, respectively, of
\VAR{integer
}s.
146 \kwd{long-float
} approximation of $
\pi$, Ludolph's number.
149 \IT{\arrGOO{(
\FU*
{SIN
} \VAR{ a
})\\
150 (
\FU*
{COS
} \VAR{ a
})\\
151 (
\FU*
{TAN
} \VAR{ a
})
}{.
}}
153 With
\VAR{a
} in radians, return
\retval{$
\sin a$
},
\retval{$
\cos
154 a$
}, or
\retval{$
\tan a$
}, respectively.
157 \IT{\arrGOO{(
\FU*
{ASIN
} \VAR{ a
})\\
158 (
\FU*
{ACOS
} \VAR{ a
})
}{.
}}
160 \retval{$
\arcsin a$
} or
\retval{$
\arccos
161 a$
}, respectively, in radians.
164 \IT{(
\FU*
{ATAN
} \VAR{a
} \Op{\VAR{b
}\DF{1}})
}
166 \retval{$
\arctan \frac{a
}{b
}$
} in radians.
169 \IT{\arrGOO{(
\FU*
{SINH
} \VAR{ a
})\\(
\FU*
{COSH
} \VAR{ a
})\\(
\FU*
{TANH
}
172 Return
\retval{$
\sinh a$
},
\retval{$
\cosh
173 a$
}, or
\retval{$
\tanh a$
}, respectively.
176 \IT{\arrGOO{(
\FU*
{ASINH
} \VAR{ a
})\\
177 (
\FU*
{ACOSH
} \VAR{ a
})
178 \\(
\FU*
{ATANH
} \VAR{ a
})
}{.
}}
180 \retval{$
\operatorname{asinh
} a$
},
\retval{$
\operatorname{acosh
}
181 a$
}, or
\retval{$
\operatorname{atanh
} a$
}, respectively.
184 \IT{(
\FU*
{CIS
} \VAR{a
})
}
187 \retval{$
\operatorname{e
}^
{\operatorname{i
} a
} =
\cos a +
188 \operatorname{i
}\sin a$
}.
191 \IT{(
\FU*
{CONJUGATE
} \VAR{a
})
}
192 {Return
\retval{conjugate of
\VAR{a
}}.
195 \IT{\arrGOO{(
\FU*
{NUMERATOR
} \VAR{ rational
})\\
196 (
\FU*
{DENOMINATOR
} \VAR{ rational
})
}{.
}}
198 Return
\retval{numerator
} or
\retval{denominator
}, respectively, of
199 \VAR{rational
}'s canonical form.
202 \IT{\arrGOO{(
\FU*
{REALPART
} \VAR{ number
})\\
203 (
\FU*
{IMAGPART
} \VAR{ number
})
}{.
}}
205 Return
\retval{real part
} or
\retval{imaginary part
}, respectively, of
\VAR{number
}.
208 \IT{\arrGOO{(
\FU*
{MAX
} \RP{\VAR{num
}})\\
209 (
\FU*
{MIN
} \RP{\VAR{num
}})
}{.
}}
211 Return
\retval{greatest
} or
\retval{least
}, respectively, of
\VAR{num
}s.
215 \Goo{\FU*
{FLOOR
}\XOR\FU*
{FFLOOR
}}\\
216 \Goo{\FU*
{CEILING
}\XOR\FU*
{FCEILING
}}\\
217 \Goo{\FU*
{TRUNCATE
}\XOR\FU*
{FTRUNCATE
}}\\
218 \Goo{\FU*
{ROUND
}\XOR\FU*
{FROUND
}}}{\
}}
219 \VAR{n
} \Op{\VAR{d
}\DF{1}})
}
221 Return
\retval{$n/d$
} (
\kwd{integer
} or
\kwd{float
}, respectively) truncated
222 towards $-
\infty$, $+
\infty$, $
0$, or rounded, respectively; and
\retvalii{remainder
}.
225 \IT{(
\xorGOO{\FU*
{MOD
}\\
226 \FU*
{REM
}}{\
}} \VAR{n
} \Op{\VAR{d
}\DF{1}})
}
227 {Same as
\FU{floor
} or
228 \FU{truncate
}, respectively, but return
\retval{remainder
} only.
231 \IT{(
\FU*
{RANDOM
} \VAR{limit
} \Op{\VAR{state
}\DF{\V{*random-state
}}})
}
233 Return non-negative
\retval{random
234 number
} less then, and of type of
\VAR{limit
}.
237 \IT{(
\FU*
{MAKE-RANDOM-STATE
} \Op{\VAR{state
}\DF{\NIL}})
}
239 Make
\retval{random state
}.
242 \IT{\V*
{*random-state*
}}
244 Current random state.
247 \IT{(
\FU*
{FLOAT-SIGN
} \VAR{num-a
} \Op{\VAR{num-b
}\DF{1}})
}
249 \retval{\VAR{num-b
}} with the sign of
\VAR{num-a
}.
252 \IT{(
\FU*
{SIGNUM
} \VAR{n
})
}
253 {\retval{Number
} of magnitude
1
254 representing sign or phase of
\VAR{n
}.
257 \IT{(
\FU*
{COMPLEX
} \VAR{real
} \Op{\VAR{imag
}\DF{0}})
}
258 {Make a
\retval{complex number
}.
261 \IT{(
\FU*
{PHASE
} \VAR{number
})
}
262 {\retval{Angle
} of
\VAR{number
}'s polar representation.
265 \IT{\arrGOO{(
\FU*
{RATIONAL
} \VAR{ real
})\\
266 (
\FU*
{RATIONALIZE
} \VAR{ real
})
}{.
}}
268 Convert
\VAR{real
} to
\retval{rational
}. Assume complete/limited accuracy for
\VAR{real
}.
271 \IT{(
\FU*
{FLOAT
} \VAR{real
}
272 \Op{\VAR{prototype
}\DF{\kwd{single-float
}}})
}
274 Convert
\VAR{real
} into
\VAR{prototype
}-shaped
\retval{float
}.
280 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
281 \subsection{Logic Functions
}
282 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
283 \label{section:Logic Functions
}
287 \IT{(
\kwd*
{BOOLE
} \VAR{operation
} \VAR{int-a
} \VAR{int-b
})
}
290 \retval{value
} of bit-wise logical
\VAR{operation
}.
\VAR{operation
}s
295 \IT{\CNS*
{BOOLE-
1}} {\retval{\VAR{int-a
}}.
}
296 \IT{\CNS*
{BOOLE-
2}} {\retval{\VAR{int-b
}}.
}
297 \IT{\CNS*
{BOOLE-C1
}} {\retval{Two's complement of
\VAR{int-a
}}.
}
298 \IT{\CNS*
{BOOLE-C2
}} {\retval{Two's complement of
\VAR{int-b
}}.
}
299 \IT{\CNS*
{BOOLE-SET
}} {\retval{All bits set
}.
}
300 \IT{\CNS*
{BOOLE-CLR
}} {\retval{All bits zero
}.
}
301 \IT{\CNS*
{BOOLE-EQV
}} {\retval{$
\text{\VAR{int-a
}} \equiv \text{\VAR{int-b
}}$
}.
}
302 \IT{\CNS*
{BOOLE-AND
}} {\retval{$
\text{\VAR{int-a
}}\land\text{\VAR{int-b
}}$
}.
}
303 \IT{\CNS*
{BOOLE-ANDC1
}} {\retval{Two's complement of
\VAR{int-a
} $
\land$
\VAR{int-b
}}.
}
304 \IT{\CNS*
{BOOLE-ANDC2
}} {\retval{\VAR{int-a
} $
\land$ two's complement of
\VAR{int-b
}}.
}
305 \IT{\CNS*
{BOOLE-NAND
}} {\retval{$
\lnot(
\text{\VAR{int-a
}} \land \text{\VAR{int-b
}})$
}.
}
306 \IT{\CNS*
{BOOLE-IOR
}} {\retval{$
\text{\VAR{int-a
}} \lor \text{\VAR{int-b
}}$
}.
}
307 \IT{\CNS*
{BOOLE-ORC1
}} {\retval{Two's complement of
\VAR{int-a
} $
\lor$
\VAR{int-b
}}.
}
308 \IT{\CNS*
{BOOLE-ORC2
}} {\retval{\VAR{int-a
} $
\lor$ two's complement of
\VAR{int-b
}}.
}
309 \IT{\CNS*
{BOOLE-XOR
}} {\retval{$
\lnot(
\text{\VAR{int-a
}} \equiv \text{\VAR{int-b
}})$
}.
}
310 \IT{\CNS*
{BOOLE-NOR
}} {\retval{$
\lnot(
\text{\VAR{int-a
}} \lor \text{\VAR{int-b
}})$
}.
}
313 \IT{(
\FU*
{LOGNOT
}\VAR{ integer
})
}
315 \retval{Two's complement of
\VAR{integer
}}.
318 \IT{\arrGOO{(
\FU*
{LOGEQV
} \OPn{\VAR{ integer
}})\\
319 (
\FU*
{LOGAND
} \OPn{\VAR{ integer
}})
}{.
}}
321 Return
\retval{value of exclusive-nored or anded
\VAR{integer
}s
},
322 respectively. Without any
\VAR{integer
}, return
\retval{$-
1$
}.
325 \IT{(
\FU*
{LOGANDC1
} \VAR{ int-a
} \VAR{ int-b
})
}
327 \retval{Two's complement of
\VAR{int-a
} $
\land$
\VAR{int-b
}}.
330 \IT{(
\FU*
{LOGANDC2
} \VAR{ int-a
} \VAR{ int-b
})
}
332 \retval{\VAR{int-a
} $
\land$ two's complement of
\VAR{int-b
}}.
335 \IT{(
\FU*
{LOGNAND
} \VAR{ int-a
} \VAR{ int-b
})
}
337 \retval{$
\lnot(
\text{\VAR{int-a
}} \land \text{\VAR{int-b
}})$
}.
340 \IT{\arrGOO{(
\FU*
{LOGXOR
} \OPn{\VAR{ integer
}})\\
341 (
\FU*
{LOGIOR
} \OPn{\VAR{ integer
}})
}{.
}}
343 Return
\retval{value of exclusive-ored or ored
\VAR{integer
}s
},
344 respectively. Without any
\VAR{integer
}, return
\retval{0}.
347 \IT{(
\FU*
{LOGORC1
} \VAR{ int-a
} \VAR{ int-b
})
}
349 \retval{Two's complement of
\VAR{int-a
} $
\lor$
\VAR{int-b
}}.
352 \IT{(
\FU*
{LOGORC2
} \VAR{ int-a
} \VAR{ int-b
})
}
354 \retval{\VAR{int-a
} $
\lor$ two's complement of
\VAR{int-b
}}.
357 \IT{(
\FU*
{LOGNOR
} \VAR{ int-a
} \VAR{ int-b
})
}
359 \retval{$
\lnot(
\text{\VAR{int-a
}} \lor \text{\VAR{int-b
}})$
}.
362 \IT{(
\FU*
{LOGTEST
} \VAR{int-a
} \VAR{int-b
})
}
363 {Return
\retval{\T} if
364 there is any bit set in
\VAR{int-a
} which ist set in
\VAR{int-b
} as well.
367 \IT{(
\FU*
{LOGCOUNT
} \VAR{integer
})
}
369 \retval{number of bits
} set
373 \IT{(
\FU*
{ASH
} \VAR{integer
} \VAR{count
})
}
375 Return copy of
\retval{\VAR{integer
}} arithmetically shifted left with zeros added
376 at the right, or, for $
\VAR{count
}<
0$, shifted right discarding
380 \IT{(
\FU*
{MASK-FIELD
} \VAR{byte-spec
} \VAR{integer
})
}
382 Return copy of
\retval{\VAR{integer
}} with all bits unset but those denoted by
383 \VAR{byte-spec
}.
\kwd{setf
}able.
389 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
390 \subsection{Integer Functions
}
391 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
394 \IT{(
\FU*
{INTEGER-LENGTH
} \VAR{integer
})
}
396 \retval{Number of bits
} necessary to represent
\VAR{integer
}.
399 \IT{(
\FU*
{LDB-TEST
} \VAR{byte-spec
} \VAR{integer
})
}
401 Return
\retval{\T} if any bit specified by
\VAR{byte-spec
} in
402 \VAR{integer
} is set.
405 \IT{(
\FU*
{LDB
} \VAR{byte-spec
} \VAR{integer
})
}
407 Extract
\retval{byte
} denoted by
\VAR{byte-spec
} from
408 \VAR{integer
}.
\kwd{setf
}able.
411 \IT{(
\FU*
{BYTE
} \VAR{size
} \VAR{position
})
}
413 \retval{Byte specifier
} for a byte of
\VAR{size
} bits starting at a
414 weight of $
2^
{\VAR{position
}}$.
417 \IT{\arrGOO{(
\FU*
{BYTE-SIZE
} \VAR{ byte-spec
})\\
418 (
\FU*
{BYTE-POSITION
} \VAR{ byte-spec
})
}{.
}}
420 \retval{Size
} or
\retval{position
}, respective, of
\VAR{byte-spec
}.
423 \IT{(
\xorGOO{\FU*
{DEPOSIT-FIELD
}\\
425 \VAR{int-a
} \VAR{byte-spec
} \VAR{int-b
})
}
427 Return
\retval{\VAR{int-b
}} with bits denoted by
\VAR{byte-spec
} replaced
428 by corresponding bits of
\VAR{int-a
}, or by the low (
\FU{byte-size
}
429 \VAR{byte-spec
}) bits of
\VAR{int-a
}, respectively.
435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436 \subsection[Implementation- Dependent
]{Implementation-Dependent
}
437 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
440 \IT{\arrGOO{\CNS{SHORT-FLOAT
}\\
443 \CNS{LONG-FLOAT
}}{\
}}\kwd{-
}%
444 \xorGOO{\kwd{EPSILON
}\\
445 \kwd{NEGATIVE-EPSILON
}}{.
}}
447 \index{SHORT-FLOAT-EPSILON
}%
448 \index{SINGLE-FLOAT-EPSILON
}%
449 \index{DOUBLE-FLOAT-EPSILON
}%
450 \index{LONG-FLOAT-EPSILON
}%
451 \index{SHORT-FLOAT-NEGATIVE-EPSILON
}%
452 \index{SINGLE-FLOAT-NEGATIVE-EPSILON
}%
453 \index{DOUBLE-FLOAT-NEGATIVE-EPSILON
}%
454 \index{LONG-FLOAT-NEGATIVE-EPSILON
}%
455 Smallest possible number making a difference when added or subtracted, respectively.
459 \CNS{LEAST-NEGATIVE
}\\
460 \CNS{LEAST-NEGATIVE-NORMALIZED
}\\
461 \CNS{LEAST-POSITIVE
}\\
462 \CNS{LEAST-POSITIVE-NORMALIZED
}}{\
}}%
468 \kwd{LONG-FLOAT
}}{.
}}
470 \index{LEAST-NEGATIVE-SHORT-FLOAT
}%
471 \index{LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT
}%
472 \index{LEAST-NEGATIVE-SINGLE-FLOAT
}%
473 \index{LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT
}%
474 \index{LEAST-NEGATIVE-DOUBLE-FLOAT
}%
475 \index{LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT
}%
476 \index{LEAST-NEGATIVE-LONG-FLOAT
}%
477 \index{LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT
}%
478 \index{LEAST-POSITIVE-SHORT-FLOAT
}%
479 \index{LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT
}%
480 \index{LEAST-POSITIVE-SINGLE-FLOAT
}%
481 \index{LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT
}%
482 \index{LEAST-POSITIVE-DOUBLE-FLOAT
}%
483 \index{LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT
}%
484 \index{LEAST-POSITIVE-LONG-FLOAT
}%
485 \index{LEAST-POSITIVE-NORMALIZED-LONG-FLOAT
}%
486 Available numbers closest to $-
0$ or $+
0$, respectively.
489 \IT{\arrGOO{\CNS{MOST-NEGATIVE
}\\
490 \CNS{MOST-POSITIVE
}}{\
}}%
499 \index{MOST-NEGATIVE-DOUBLE-FLOAT
}%
500 \index{MOST-NEGATIVE-LONG-FLOAT
}%
501 \index{MOST-NEGATIVE-SHORT-FLOAT
}%
502 \index{MOST-NEGATIVE-SINGLE-FLOAT
}%
503 \index{MOST-NEGATIVE-FIXNUM
}%
504 \index{MOST-POSITIVE-DOUBLE-FLOAT
}%
505 \index{MOST-POSITIVE-LONG-FLOAT
}%
506 \index{MOST-POSITIVE-SHORT-FLOAT
}%
507 \index{MOST-POSITIVE-SINGLE-FLOAT
}%
508 \index{MOST-POSITIVE-FIXNUM
}%
509 Available numbers closest to $-
\infty$ or $+
\infty$, respectively.
512 \IT{\arrGOO{(
\FU*
{DECODE-FLOAT
} \VAR{ n
})\\
513 (
\FU*
{INTEGER-DECODE-FLOAT
} \VAR{ n
})
}{.
}}
515 Return
\retval{significand
},
\retvalii{exponent
}, and
516 \retvaliii{sign
} of
\kwd{float
} \VAR{n
}.
519 \IT{(
\FU*
{SCALE-FLOAT
} \VAR{n
} \Op{\VAR{i
}})
}
521 With
\VAR{n
}'s radix $b$, return $n b^
{i
}$.
525 (
\FU*
{FLOAT-RADIX
} \VAR{ n
})\\
526 (
\FU*
{FLOAT-DIGITS
} \VAR{ n
})\\
527 (
\FU*
{FLOAT-PRECISION
} \VAR{ n
})
}{.
}}
529 \retval{Radix
},
\retval{number of digits
} in that radix, or
530 \retval{precision
} in that radix, respectively, of float
\VAR{n
}.
533 \IT{(
\FU*
{UPGRADED-COMPLEX-PART-TYPE
} \VAR{foo
})
}
535 most specialized complex number able to hold parts of type
\VAR{foo
}.