[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |