<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for GNU Texinfo (version 6.7, 23 September 2019),
a documentation system that can produce both online information and a
printed manual from a single source using semantic markup.
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997,
1998, 1999, 2001, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
"GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Optional Arguments (GNU Texinfo 6.7)</title>
<meta name="description" content="Optional Arguments (GNU Texinfo 6.7)">
<meta name="keywords" content="Optional Arguments (GNU Texinfo 6.7)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="texi2any">
<link href="index.html" rel="start" title="Top">
<link href="Command-and-Variable-Index.html" rel="index" title="Command and Variable Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Definition-Commands.html" rel="up" title="Definition Commands">
<link href="_0040deffnx.html" rel="next" title="@deffnx">
<link href="Def-Cmd-Continuation-Lines.html" rel="prev" title="Def Cmd Continuation Lines">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<span id="Optional-Arguments"></span><div class="header">
<p>
Next: <a href="_0040deffnx.html" accesskey="n" rel="next"><code>@deffnx</code></a>, Previous: <a href="Def-Cmd-Continuation-Lines.html" accesskey="p" rel="prev">Def Cmd Continuation Lines</a>, Up: <a href="Definition-Commands.html" accesskey="u" rel="up">Definition Commands</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Command-and-Variable-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="Optional-and-Repeated-Arguments"></span><h3 class="section">14.3 Optional and Repeated Arguments</h3>
<span id="index-Optional-and-repeated-arguments"></span>
<span id="index-Repeated-and-optional-arguments"></span>
<span id="index-Arguments_002c-repeated-and-optional"></span>
<span id="index-Syntax_002c-optional-_0026-repeated-arguments"></span>
<span id="index-Meta_002dsyntactic-chars-for-arguments"></span>
<p>Some entities take optional or repeated arguments, conventionally
specified by using square brackets and ellipses: an argument enclosed
within square brackets is optional, and an argument followed by an
ellipsis is optional and may be repeated more than once.
</p>
<p>Thus, [<var>optional-arg</var>] means that <var>optional-arg</var> is optional
and <var>repeated-args</var><code>…</code> stands for zero or more
arguments. Parentheses are used when several arguments are grouped
into additional levels of list structure in Lisp.
</p>
<p>Here is the <code>@defspec</code> line of an example of an imaginary
(complicated) special form:
</p>
<blockquote>
<dl>
<dt id="index-foobar">Special Form: <strong>foobar</strong> <em>(var [from to [inc]]) body…</em></dt>
</dl>
</blockquote>
<p>In this example, the arguments <var>from</var> and <var>to</var> are optional,
but must both be present or both absent. If they are present,
<var>inc</var> may optionally be specified as well. These arguments are
grouped with the argument <var>var</var> into a list, to distinguish them
from <var>body</var>, which includes all remaining elements of the
form.
</p>
<p>In a Texinfo source file, this <code>@defspec</code> line is written like
this:
</p>
<div class="example">
<pre class="example">@defspec foobar (var [from to [inc]]) body@dots{}
</pre></div>
<p>The function is listed in the Command and Variable Index under
‘<samp>foobar</samp>’.
</p>
</body>
</html>