The :inline
feature lets you splice a variable number of
elements into the middle of a list or vector. You use it in a
set
, choice
or repeat
type which appears among the
element-types of a list
or vector
.
Normally, each of the element-types in a list
or vector
describes one and only one element of the list or vector. Thus, if an
element-type is a repeat
, that specifies a list of unspecified
length which appears as one element.
But when the element-type uses :inline
, the value it matches is
merged directly into the containing sequence. For example, if it
matches a list with three elements, those become three elements of the
overall sequence. This is analogous to using `,@' in the backquote
construct.
For example, to specify a list whose first element must be t
and whose remaining arguments should be zero or more of foo
and
bar
, use this customization type:
(list (const t) (set :inline t foo bar))
This matches values such as (t)
, (t foo)
, (t bar)
and (t foo bar)
.
When the element-type is a choice
, you use :inline
not
in the choice
itself, but in (some of) the alternatives of the
choice
. For example, to match a list which must start with a
file name, followed either by the symbol t
or two strings, use
this customization type:
(list file (choice (const t) (list :inline t string string)))
If the user chooses the first alternative in the choice, then the
overall list has two elements and the second element is t
. If
the user chooses the second alternative, then the overall list has three
elements and the second and third must be strings.
Go to the first, previous, next, last section, table of contents.