398 lines
No EOL
8 KiB
HTML
398 lines
No EOL
8 KiB
HTML
<!DOCTYPE HTML>
|
|
<HTML LANG="en-us"
|
|
><HEAD
|
|
><TITLE
|
|
>gensym | Common Lisp Nova Spec</TITLE
|
|
><META CHARSET="US-ASCII"
|
|
><LINK REL="canonical" HREF="f_gensym.html"
|
|
><LINK REL="next" HREF="v_gensym-counter.html" TYPE="text/html" TITLE="*gensym-counter*"
|
|
><LINK REL="prev" HREF="f_copy-symbol.html" TYPE="text/html" TITLE="copy-symbol"
|
|
><LINK REL="up" HREF="10_2_Symbols_Dictionary.html" TYPE="text/html" TITLE="10.2 Symbols Dictionary"
|
|
><LINK REL="start" HREF="index.html" TYPE="text/html" TITLE="Common Lisp Nova Spec"
|
|
><META NAME="VIEWPORT" CONTENT="width=device-width, initial-scale=1.0"
|
|
><LINK REL="STYLESHEET" HREF="dpans.css%3F3909942064.css"
|
|
><SCRIPT SRC="dpans.js%3F3909942064"
|
|
></SCRIPT
|
|
><SCRIPT SRC="apropos.js%3F3909942064"
|
|
></SCRIPT
|
|
></HEAD
|
|
><BODY
|
|
><DIV
|
|
><DIV CLASS="topnav"
|
|
><DIV CLASS="breadcrumb"
|
|
><SPAN CLASS="breadcrumb-item"
|
|
><A HREF="index.html"
|
|
>Common Lisp Nova Spec</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="10_Symbols.html"
|
|
>10. Symbols</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="10_2_Symbols_Dictionary.html"
|
|
>10.2 Symbols Dictionary</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="f_gensym.html"
|
|
>gensym</A
|
|
></SPAN
|
|
></DIV
|
|
><DIV CLASS="apropos"
|
|
><DIV CLASS="apropos-io"
|
|
><A HREF="f_copy-symbol.html" CLASS="prev"
|
|
>←</A
|
|
><SPAN ID="apropos-label"
|
|
>Apropos </SPAN
|
|
><INPUT ID="apropos" AUTOFOCUS="AUTOFOCUS" PLACEHOLDER="Type here to search" ONINPUT="aproposInput(this);" ONKEYUP="aproposKeyup(event);" ONCHANGE="aproposChange(this);" ONFOCUS="aproposFocus(this);" ONFOCUSOUT="aproposFocusout(this);"
|
|
><A HREF="v_gensym-counter.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV ID="apropos-res"
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV CLASS="matter"
|
|
><DIV CLASS="com"
|
|
><DIV CLASS="begincom"
|
|
><HR
|
|
><TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0"
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="100%" CLASS="name"
|
|
><SPAN CLASS="idx" DATA-KIND="idxref" DATA-TERM="gensym"
|
|
></SPAN
|
|
><B
|
|
>gensym</B
|
|
></TD
|
|
><TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="0" NOWRAP="NOWRAP" CLASS="ftype"
|
|
><I
|
|
>Function</I
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
></DIV
|
|
><UL CLASS="subtoc"
|
|
></UL
|
|
><DL
|
|
><DT
|
|
><B
|
|
>Syntax</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><B
|
|
>gensym</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&optional</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>x</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>new-symbol</SPAN
|
|
></P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Arguments and Values</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>x</VAR
|
|
> — a <A HREF="26_1_Glossary.html#string"
|
|
><EM CLASS="term"
|
|
>string</EM
|
|
></A
|
|
> or a non-negative <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>. Complicated defaulting behavior; see below. </P
|
|
><P CLASS="j"
|
|
><VAR CLASS="param"
|
|
>new-symbol</VAR
|
|
> — a <A HREF="26_1_Glossary.html#fresh"
|
|
><EM CLASS="term"
|
|
>fresh</EM
|
|
></A
|
|
>, <A HREF="26_1_Glossary.html#uninterned"
|
|
><EM CLASS="term"
|
|
>uninterned</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Description</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Creates and returns a <A HREF="26_1_Glossary.html#fresh"
|
|
><EM CLASS="term"
|
|
>fresh</EM
|
|
></A
|
|
>, <A HREF="26_1_Glossary.html#uninterned"
|
|
><EM CLASS="term"
|
|
>uninterned</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
>, as if by calling <A HREF="f_make-symbol.html" CLASS="funref"
|
|
><B
|
|
>make-symbol</B
|
|
></A
|
|
>. (The only difference between <A HREF="f_gensym.html" CLASS="funref"
|
|
><B
|
|
>gensym</B
|
|
></A
|
|
> and <A HREF="f_make-symbol.html" CLASS="funref"
|
|
><B
|
|
>make-symbol</B
|
|
></A
|
|
> is in how the <VAR CLASS="param"
|
|
>new-symbol</VAR
|
|
>’s <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
> is determined.) </P
|
|
><P CLASS="j"
|
|
>The <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
> of the <VAR CLASS="param"
|
|
>new-symbol</VAR
|
|
> is the concatenation of a prefix, which defaults to <CODE CLASS="f"
|
|
>"G"</CODE
|
|
>, and a suffix, which is the decimal representation of a number that defaults to the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of <A HREF="v_gensym-counter.html" CLASS="misc"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>If <VAR CLASS="param"
|
|
>x</VAR
|
|
> is supplied, and is a <A HREF="26_1_Glossary.html#string"
|
|
><EM CLASS="term"
|
|
>string</EM
|
|
></A
|
|
>, then that <A HREF="26_1_Glossary.html#string"
|
|
><EM CLASS="term"
|
|
>string</EM
|
|
></A
|
|
> is used as a prefix instead of <CODE CLASS="f"
|
|
>"G"</CODE
|
|
> for this call to <A HREF="f_gensym.html" CLASS="funref"
|
|
><B
|
|
>gensym</B
|
|
></A
|
|
> only. </P
|
|
><P CLASS="j"
|
|
>If <VAR CLASS="param"
|
|
>x</VAR
|
|
> is supplied, and is an <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>, then that <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>, instead of the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of <A HREF="v_gensym-counter.html" CLASS="misc"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
>, is used as the suffix for this call to <A HREF="f_gensym.html" CLASS="funref"
|
|
><B
|
|
>gensym</B
|
|
></A
|
|
> only. </P
|
|
><P CLASS="j"
|
|
>If and only if no explicit suffix is supplied, <A HREF="v_gensym-counter.html" CLASS="varref"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
> is incremented after it is used.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Examples</B
|
|
></DT
|
|
><DD
|
|
><PRE CLASS="screen"
|
|
>(setq sym1 (gensym)) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> #:G3142
|
|
(symbol-package sym1) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL
|
|
(setq sym2 (gensym 100)) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> #:G100
|
|
(setq sym3 (gensym 100)) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> #:G100
|
|
(eq sym2 sym3) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>
|
|
(find-symbol "G100") <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL, NIL
|
|
(gensym "T") <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> #:T3143
|
|
(gensym) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> #:G3144</PRE
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Side Effects</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Might increment <A HREF="v_gensym-counter.html" CLASS="varref"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Affected By</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><A HREF="v_gensym-counter.html" CLASS="varref"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
></P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Exceptional Situations</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Should signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> if <VAR CLASS="param"
|
|
>x</VAR
|
|
> is not a <A HREF="26_1_Glossary.html#string"
|
|
><EM CLASS="term"
|
|
>string</EM
|
|
></A
|
|
> or a non-negative <A HREF="26_1_Glossary.html#integer"
|
|
><EM CLASS="term"
|
|
>integer</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>See Also</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><A HREF="f_gentemp.html" CLASS="funref"
|
|
><B
|
|
>gentemp</B
|
|
></A
|
|
>, <A HREF="v_gensym-counter.html" CLASS="varref"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
></P
|
|
></DD
|
|
><DT
|
|
><B
|
|
>Notes</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>The ability to pass a numeric argument to <A HREF="f_gensym.html" CLASS="funref"
|
|
><B
|
|
>gensym</B
|
|
></A
|
|
> has been deprecated; explicitly <A HREF="26_1_Glossary.html#binding"
|
|
><EM CLASS="term"
|
|
>binding</EM
|
|
></A
|
|
> <A HREF="v_gensym-counter.html" CLASS="varref"
|
|
><B
|
|
>*gensym-counter*</B
|
|
></A
|
|
> is now stylistically preferred. (The somewhat baroque conventions for the optional argument are historical in nature, and supported primarily for compatibility with older dialects of Lisp. In modern code, it is recommended that the only kind of argument used be a string prefix. In general, though, to obtain more flexible control of the <VAR CLASS="param"
|
|
>new-symbol</VAR
|
|
>’s <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
>, consider using <A HREF="f_make-symbol.html" CLASS="funref"
|
|
><B
|
|
>make-symbol</B
|
|
></A
|
|
> instead.)</P
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
></DIV
|
|
><DIV CLASS="footer"
|
|
><DIV CLASS="btmnav"
|
|
><A HREF="f_copy-symbol.html" CLASS="prev"
|
|
>←</A
|
|
><A HREF="v_gensym-counter.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV CLASS="trail"
|
|
>Conversion to HTML copyright 2023 by Gilbert Baumann</DIV
|
|
></DIV
|
|
></DIV
|
|
><SCRIPT
|
|
>domReady();</SCRIPT
|
|
></BODY
|
|
></HTML
|
|
> |