<?xml version="1.0" encoding="UTF-8"?>

<appendix id="faq"><title>Frequently Asked Questions (With Answers)
  about &clisp;</title>

<abstract id="faq-abstract">
<para>This is a list of frequently asked questions about &clisp; on the
<link linkend="faq-mailing-lists">CLISP mailing lists</link>
and the USENET newsgroup
<ulink url="http://groups.google.com/groups?as_ugroup=comp.lang.lisp"
       >comp.lang.lisp</ulink>.
<emphasis>All</emphasis> the legitimate technical question are addressed
in the &clisp; documentation (<olink targetdoc="impnotes"/>,
<olink targetdoc="man"/>, <olink targetdoc="clink"/>), and for such
questions this list provides a link into the docs.
The frequently asked <link linkend="faq-meta">political</link> questions
are answered here in <emphasis>full</emphasis> detail (meaning that no
further explanations of the issues could be provided).</para>

<para>Please submit more questions (and answers!)
 to <ulink url="ml">clisp-list</ulink>.</para>
</abstract>

<qandaset id="faq-set"><title>FAQ</title>

<qandadiv id="faq-meta"><title>Meta Information</title>

<qandadiv id="faq-meta-misc"><title>Miscellaneous</title>

<qandaentry id="faq-fine"><question id="faq-fine-q"><simpara>What is
   <quote>FAQ fine</quote>?</simpara></question>
 <answer><para>We levy a fine of 10 zorkmids for
   <link linkend="faq-help">asking a question</link> that is answered
   with a link to this <link linkend="faq">FAQ</link> document.
   We further levy a fine of 1 zorkmid for asking a question that is answered
   with a link to the &clisp; <link linkend="impnotes-top">manual</link>.
   The fines are payable to the person who answered the questions.
   The definition of a <quote>zorkmid</quote> is left to the sole
   discretion of the <emphasis>payer</emphasis>.</para>
  <para>This should &not-e; discourage you from asking questions, but
   rather <emphasis role="strong">encourage</emphasis> you to
   <emphasis role="strong">read</emphasis> the manual and
   <emphasis role="strong">answer</emphasis> questions from other users.</para>
</answer></qandaentry>


<qandaentry id="faq-doc"><question id="faq-doc-q"><simpara>The official &clisp;
   documentation sucks - is anything better available?</simpara></question>
 <answer><para>As with all generic complaints, the answer to this one is
   <ulink url="http://www.cygwin.com/acronyms/#PTC"><acronym>PTC<alt>Patches
      Thoughtfully Considered</alt></acronym></ulink>.</para>
  <para>Additionally, the nightly builds of the &clisp; implementation
   notes documenting the current &hg; <literal>default</literal> branch
   are available at <ulink url="http://clisp.podval.org/impnotes/"/>.
   It contains both the documentation for the new features and the
   general improvements in the documentation.</para>
</answer></qandaentry>

<qandaentry id="faq-gpl"><question id="faq-gpl-q"><simpara>License
   - why &gnu; &gpl;?</simpara></question>
<answer><para><ulink role="clisp-cvs" url="doc/Why-CLISP-is-under-GPL">Because
   &clisp; uses &readline;</ulink>.</para>
<para>Note that this does &not-e; necessarily prevent you from distributing
 your proprietary products based on &clisp;. See <emphasis>Note</emphasis>
 in <filename role="clisp-cvs">COPYRIGHT</filename> and
 <xref linkend="faq-licensing"/>.</para></answer></qandaentry>

<qandaentry id="faq-ansi"><question id="faq-ansi-q"><simpara>What about
   &ansi-cl; compliance?</simpara></question>
<answer><para>&clisp; <ulink url="clhs/glo"><emphasis>purports to
    conform</emphasis></ulink> to the &ansi-cl; specification, so all
  deviations in <screen>&sh-prompt; &clisp-cmd; &opt-ansi;</screen>
  from the &ansi-cl; are bugs and are not (yet) fixed only due
  to lack of resources.</para>

 <para>On the other hand, some decisions made by the ANSI X3J13 committee
  were not as justified from the <emphasis>technical</emphasis> point of
  view as were most of them, and some of those questionable decisions
  were made &after-e; the alternative behavior has already been implemented
  in &clisp;.  The &clisp; developers took pains to modify &clisp; to
  unconditionally comply with the &ansi-cl; specification in all cases
  <link linkend="ansi">except for a handful of situations where they
  believed that the committee had made a mistake</link>, in which cases
  the committee behavior is <emphasis>still</emphasis> optionally
  available.</para>

 <para>&clisp; does not start in the ansi mode by default for
  historical reasons and this is not about to change.
  <link linkend="image">Dumping an image</link> or
  <olink targetdoc="man" targetptr="opt-ansi">passing a command line
   argument</olink> are easy enough.</para></answer></qandaentry>


<qandaentry id="faq-help"><question id="faq-help-q"><simpara>How do I
   ask for help?</simpara></question>
<answer><label>&clisp;</label><para>Type &help; and hit &enter;.</para></answer>
<answer><label>Human</label>
 <para>Politely - please refer to &netiquette;.</para>
 <para>If you have a question about &clisp;, you have the following options
  (listed in the order of decreasing audience size):<variablelist>
   <varlistentry><term>USENET group <ulink url="http://groups.google.com/groups?as_ugroup=comp.lang.lisp">comp.lang.lisp</ulink></term>
    <listitem><simpara>This is the right place to ask all general Lisp
      questions, such as <ulink role="clhs" url="acc_charcm_schar">"how
       do I access a character in a string?"</ulink></simpara>
   </listitem></varlistentry>
   <varlistentry><term>&clisp; User Mailing
     List <ulink url="ml">clisp-list</ulink></term>
    <term>AKA <ulink url="http://news.gmane.org/gmane.lisp.clisp.general"/>
    </term><listitem><simpara>This is the right place to ask user-level
      &clisp;-specific questions, such as <quote>"how do I save my &clisp;
      &mem-image;?"</quote>.</simpara>
      <simpara>See also <xref linkend="faq-bugs"/>.</simpara>
   </listitem></varlistentry>
   <varlistentry><term>&clisp; Developer Mailing
     List <ulink url="ml">clisp-devel</ulink></term>
    <term>AKA <ulink url="http://news.gmane.org/gmane.lisp.clisp.devel"/></term>
    <listitem><simpara>This is the right place to discuss &clisp; internals,
      problems with the current development sources, submit patches,
      offer help.</simpara></listitem></varlistentry>
   <varlistentry><term><ulink url="http://sourceforge.net/project/memberlist.php?group_id=1355">Individual &clisp; developers</ulink></term>
    <listitem><simpara>This is <emphasis>never</emphasis> the right thing to
      do, unless you want to <emphasis>hire</emphasis> this developer to do
      &clisp; consulting (commercial support, custom enhancements etc).
      This is actually for your own benefit: the &clisp; developers are very
      busy, they might get weeks to answer your question,
      and some other user may be able to help you in the meantine;
      as well as for the benefit of the other &clisp; users,
      since the mailing lists are publicly archived (you are encouraged
      to <ulink url="http://clisp.org/#search">search</ulink> them
      before asking).</simpara>
     <simpara>Please do &not-e; copy your messages to the individual
      developers.</simpara></listitem></varlistentry>
</variablelist></para>
<note><title>Mailing lists are member-only</title>
 <simpara>To avoid spam, we require that you subscribe before you can
  post to a mailing list.
  Alternatively, you can post to the &clisp;
  <ulink url="http://sourceforge.net/forum/forum.php?forum_id=3816">web
   forum</ulink> and your message will be forwarded to
  the <ulink url="ml">clisp-list</ulink> mailing list.
  If you read a list on <ulink url="http://gmane.org">Gmane</ulink>
  and do not want to receive it also by e-mail, you can subscribe to
  it using the aforementioned web interface and then disable mail
  delivery.</simpara></note></answer></qandaentry>


<qandaentry id="faq-mailing-lists"><question id="faq-mailing-lists-q">
  <simpara>Which mailing lists should I subscribe to?</simpara></question>
<answer><para>Cross-posting in the &clisp;
  <ulink url="http://sourceforge.net/mail/?group_id=1355">mailing lists</ulink>
  is very actively discouraged and is virtually non-existent,
  thus you can subscribe to all mailing lists that are relevant to you
  without getting duplicate messages:<variablelist>
 <varlistentry><term><ulink url="ml">clisp-announce</ulink></term>
  <listitem><simpara>Extremely low-level moderated list, you should
    definitely subscribe to this list if you have any interest in &cl;
    or &clisp; whatsoever.</simpara></listitem></varlistentry>
 <varlistentry><term><ulink url="ml">clisp-list</ulink></term>
  <listitem><simpara>Subscribe to this list of you use &clisp; and want
    to ask (and answer!) questions. If you subscribe to this list, you
    probably want to subscribe to <ulink url="ml">clisp-announce</ulink> too.
 </simpara></listitem></varlistentry>
 <varlistentry><term><ulink url="ml">clisp-devel</ulink></term>
  <listitem><simpara>Subscribe to this list if you want to influence
    &clisp; developments; &hg; commit notes go here (as a daily digest).
    If you subscribe to this list, you probably want to subscribe
    to <ulink url="ml">clisp-list</ulink>
    &and-e; <ulink url="ml">clisp-announce</ulink> too.</simpara>
</listitem></varlistentry></variablelist></para></answer></qandaentry>


<qandaentry id="faq-rejected"><question id="faq-rejected-q"><simpara>Why
   is my mail to a mailing list rejected?</simpara></question>
<answer><para>&clisp; mailing lists get a lot of spam, so the
  maintainers have to take care to protect the users.  If you get a note
  that <quote>your message is held for moderator's approval</quote>, you
  can safely <emphasis role="strong">assume that it went
   to <filename>/dev/null</filename></emphasis>
  and try again, noting the following:<variablelist>
 <varlistentry><term><ulink url="ml">clisp-announce</ulink></term>
  <listitem><simpara>do not mail here without a prior discussion
    on <ulink url="ml">clisp-devel</ulink>
    or <ulink url="ml">clisp-list</ulink></simpara></listitem></varlistentry>
 <varlistentry><term><ulink url="ml">clisp-devel</ulink></term>
  <listitem><simpara>subscriber-only, you &must-e; post
    from a <emphasis role="strong">subscribed address</emphasis>,
    no exceptions (see <link linkend="faq-help">above</link>)
 </simpara></listitem></varlistentry>
 <varlistentry><term><ulink url="ml">clisp-list</ulink></term>
  <listitem><para>used to be the only open list (it is closed now), so
    it is filtered especially aggressively:<itemizedlist>
     <listitem><simpara>no &mime; mail (no &html; formatting, no
       attachments - send the URL instead)</simpara></listitem>
     <listitem><simpara>the list address must be in <literal>CC</literal>
       or <literal>TO</literal>, not <literal>BCC</literal>.
     </simpara></listitem>
     <listitem><simpara>do not mention <quote>virgin</quote>,
       <quote>penis</quote> or <quote>viagra</quote> in
       the <literal>Subject</literal> line.</simpara></listitem>
 </itemizedlist></para></listitem></varlistentry>
 </variablelist></para>

 <para>If you do not like this policy, please volunteer to maintain the
  mailing lists - you will be required to go through all the
  <quote>held for moderator's approval</quote> mail and approve/discard
  as appropriate at least twice a day.</para></answer></qandaentry>

<qandaentry id="faq-bugs"><question id="faq-bugs-q"><simpara>How do I
   report bugs?</simpara></question>
<answer><para><olink targetdoc="man" targetptr="bugs">Patiently</olink>!
</para></answer></qandaentry>


<qandaentry id="faq-contrib"><question id="faq-contrib-q"><simpara>How
   do I help?</simpara></question>
<answer><para>Please read <xref linkend="extend"/> and submit your patch,
  together with a <filename role="clisp-cvs">src/ChangeLog</filename>
  entry (see other entries there for inspiration),
  to <ulink url="ml">clisp-devel</ulink> (if it is small) or
  <ulink url="http://sourceforge.net/tracker/?func=add&amp;group_id=1355&amp;atid=301355">SourceForge patch tracker</ulink>.</para>
 <para>See <filename role="clisp-cvs">src/CodingStyle</filename> for the
  style one should follow.</para>
 <para>The patch should be created using &hg;.</para></answer></qandaentry>


<qandaentry id="faq-debug"><question id="faq-debug-q"><simpara>How do I
   debug &clisp;?</simpara></question>
<answer><formalpara id="with-debug"><title>Configuring for debugging</title>
<para>Passing &with-debug; to the top-level &configure; script does not
 just replace <option>-O</option> with <option>-g</option>
 in the &gcc; invocation, it also disables some optimizations
 (registers, assembly, generational &gc;or) and enables
 some <function role="unix">printf</function> calls (mostly before error
 messages caused by system calls).
 This means that some bugs might be exhibited by the normal build but
 &not-e; by the &with-debug; one (and vice versa).
 If that is the case, please &configure; normally but edit the
 <filename>Makefile</filename> and replace the &gcc; optimization
 options (<option>-O</option> et al) with <option>-g</option> before
 running &make;.</para></formalpara>

<formalpara id="faq-debug-core"><title>Debugging the core</title>
<para><screen>
&sh-prompt; ./configure &with-debug; --cbc build-g
&sh-prompt; cd build-g
&sh-prompt; gdb lisp.run <lineannotation>;; or lisp.exe on &win32; and &cygwin;</lineannotation>
<prompt>(gdb)</prompt> boot
<prompt>(gdb)</prompt> run
</screen></para></formalpara>

<formalpara id="faq-debug-module"><title>Debugging
  module <literal>foo</literal></title><para><screen>
&sh-prompt; ./configure &with-debug; --with-module=foo --cbc build-g
&sh-prompt; cd build-g
&sh-prompt; gdb full/lisp.run <lineannotation>;; or lisp.exe on &win32; and &cygwin;</lineannotation>
<prompt>(gdb)</prompt> full
<prompt>(gdb)</prompt> run</screen>
When debugging a &base; module, use <command>base</command>
 instead of <command>full</command> and <command>boot</command> above.
</para></formalpara>

<formalpara id="faq-debug-gengc">
 <title>The impact of generational &gc;or</title>
<para>If your &clisp; was built with generational &gc;or, you will see
 plenty of spurious segfaults (that's how the generational &gc;or
 works).  At the end of <filename role="clisp-cvs">src/.gdbinit</filename>
 you will find the following suggested &gdb; commands:
<programlisting language="gdb">handle SIGSEGV noprint nostop
break sigsegv_handler_failed</programlisting>
which will stop execution on a <emphasis>dangerous</emphasis> segfault.
You can find out whether this is needed by examining the output of the
following command:
<screen>&sh-prompt; &clisp-cmd; --version | grep GENERATIONAL_GC</screen>
</para></formalpara>

<formalpara id="faq-debug-gdbinit"><title>Useful commands</title>
<para>You are encouraged to make use of commands defined in
 <filename role="clisp-cvs">src/.gdbinit</filename>,
 such as<simplelist columns="3">
  <member><command>boot</command></member>
  <member><command>base</command></member>
  <member><command>full</command></member>
  <member><command>run_test</command></member>
  <member><command>run_mod_test</command></member>
  <member><command>run_all_tests</command></member>
  <member><command>run_ansi_tests</command></member>
  <member><command>run_ansi_tests_compiled</command></member>
  <member><command>xout</command></member>
  <member><command>zout</command></member>
  <member><command>zbacktrace</command></member>
 </simplelist>and others; <command>help &command-r;</command> in &gdb;
  will tell you what &command-r; does.</para></formalpara>

<formalpara id="faq-debug-macros"><title>Macros</title>
 <para>&clisp; makes heavy use of &cpp; macros
  (e.g., <function>pushSTACK</function>), which can complicate debugging
  in &gdb;.  The macros are defined
  in <filename role="clisp-cvs">src/lispbibl.d</filename>, but the maze
  of conditionals may be hard to navigate. If you are using &gcc;, you
  can do <command role="unix">make lispbibl.h</command> and then
  examine the definitions in the generated <filename>lispbibl.h</filename>.
  See also bottom of <filename role="clisp-cvs">src/spvw_debug.d</filename>.
</para></formalpara>

<formalpara id="faq-debug-binary-search"><title>Binary Search in Time</title>
<para>When you encounter a <emphasis>regression error</emphasis> (i.e.,
something worked in a previous version of &clisp;, but does not work in
the current version) which we cannot reproduce, we will often ask you to
figure out which specific &hg; commit introduced it.
The way to figure that out is to use <command>hg bisect</command>.
</para></formalpara>
</answer></qandaentry>
</qandadiv>

<qandadiv id="faq-menorah"><title>Logo</title>
<qandaentry id="faq-menorah-why"><question id="faq-menorah-why-q"><simpara>Why
   is &clisp; using menorah as the logo?</simpara></question>
<answer><label>Whimsical</label>
 <para>If you must have some answer and you do not care whether it is
  correct or not, you may simply think that &cl; brings
  the <emphasis>Light</emphasis> to a programmer, and &clisp; is a
  vehicle that carries the <emphasis>Light</emphasis>.</para>
 <para>Accordingly, &clisp; enables you to <emphasis>see</emphasis> the
  truth, thus you can pronounce it as <emphasis>see-lisp</emphasis>.
  Alternatively, if you are a <emphasis>seasoned</emphasis> expert,
  you might pronounce it as <emphasis>sea-lisp</emphasis>.</para></answer>
<answer><label>Historical</label>
  <para>&clisp; has been using the menorah for the logo since the project was
   first started in the late 1980-ies by Bruno Haible and Michael Stoll.
   This <emphasis>probably</emphasis> reflects the authors' affection
   toward the Jewish people, Judaism or the State of Israel
   (neither of the two original authors is Jewish by birth).
   You may ask the original authors for details yourself.
   Both of them are very busy though, so do not expect a prompt reply.
 </para></answer></qandaentry>

<qandaentry id="faq-menorah-current"><question id="faq-menorah-current-q">
  <simpara>Shouldn't the logo be changed now due to the current
   political developments in the Middle East?</simpara></question>
<answer><para>The &clisp; developers, both the original creators and the
  current maintainers, do not subscribe to the mainstream view that
  blames the Jews for everything from high oil prices and Islamic
  extremism to El Ni&ntilde;o and global warming (or cooling, whatever
  the looming disaster du jour is).</para>
 <para>Moreover, today, when Jews are being pushed out of the American
  and European academic institutions with various obscene
  <ulink url="http://how_to_help_israel.tripod.com/Petition.htm">boycott</ulink>
  and <ulink url="http://www.divestmentwatch.com/">divestment</ulink>
  campaigns, it is crucial for all of us to stand together against
  the resurgence of Nazism.</para>
<para>For more information, please see:
 <itemizedlist>
  <listitem><simpara><ulink url="http://www.camera.org/">Committee for
     Accuracy in Middle East Reporting in America</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://www.iris.org.il/">Information
     Regarding Israel's Security</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://www.memri.org/">Middle East
     Media Research Institute</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://www.mideasttruth.com/">YES to
     peace, NO to terror</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://www.mideasttruth.com/links.html">More
     links</ulink></simpara></listitem>
</itemizedlist></para></answer></qandaentry>

<qandaentry id="faq-menorah-other"><question id="faq-menorah-other-q">
  <simpara>Aren't there other political issues of concern?</simpara></question>
<answer><para>Yes, there are!  For example, in 1989 the
  <ulink url="http://sds.podval.org/commies.html">communist</ulink>
  government of the <ulink url="http://www.chinasupport.net/">People's
   Republic of China</ulink> murdered some 3000+
  student human rights protesters at the Tienanmen square in Beijing,
  and people appear to have already forgotten this crime.
  A note to that effect was kept in the file
  <filename role="clisp-cvs">src/timezone.lisp</filename>
  until 2002, when it was decided that is was not visible enough there
  and it was moved here.</para>
 <para>We also oppose <ulink url="http://swpat.ffii.org/">software
   patents</ulink> and support other liberal (i.e., pro-liberty) causes.</para>
</answer></qandaentry>

<qandaentry id="faq-menorah-users"><question id="faq-menorah-users-q">
  <simpara>Aren't you afraid of losing some users who are offended by
   the logo?</simpara></question>
<answer><para>Do you have in mind people like
  <ulink url="http://groups.google.com/groups?selm=989898671967295%40amnet.net.ae">this</ulink> one?
  Good riddance!</para></answer></qandaentry>

<qandaentry id="faq-menorah-unprofessional">
 <question id="faq-menorah-unprofessional-q"><simpara>Using software to
   promote a political agenda is unprofessional!</simpara></question>
<answer><para>Expressing their opinion is a perfectly natural thing for the
  authors, be it artistic preferences, political views or religious beliefs.
  The use of the menorah has its roots somewhere between these areas,
  and the authors are proud to display it.
  If you are unlucky enough to have lost the freedom to express your
  opinion, due to the constraints of a government, society, religion,
  or expectations of <quote>professional relationships</quote>,
  the Free World condoles with you.
  The authors of &clisp; are not operating under such constraints.
  If you are unhappy about their artistic preferences, political views or
  religious beliefs, you are free to ignore them.</para>

 <para>Many scientists have been doing art, politics and religion.
  Ren&eacute; Descartes and Isaak Newton combined mathematics and Christianity.
  Albert Einstein helped the U.S. to counter the danger of an atomic bomb
  in the hands of the Nazis.
  Bram Moolenaar, the author of <ulink url="http://www.vim.org/">VIM</ulink>,
  promotes charitable donations to Uganda.</para></answer></qandaentry>
</qandadiv>
</qandadiv>


<qandadiv id="faq-run"><title>Running &clisp;</title>

<qandaentry id="faq-defun"><question id="faq-defun-q">
  <simpara>Why are floats printed in binary?</simpara>
  <simpara>Where is &defun;?</simpara></question>
<answer><para>Pass &opt-M; to the &rt; (&lisp-run;
  or <filename>lisp.exe</filename>).
  Or, better yet, use the driver <filename>clisp</filename> (or
  <filename>clisp.exe</filename>) instead of invoking the &rt;
  directly.</para></answer></qandaentry>

<qandaentry id="faq-ide">
<question id="faq-ide-q"><simpara>Where is the <acronym>IDE<alt>Integrated
    Development Environment</alt></acronym>?</simpara></question>
<answer><label>&emacs;-based</label><itemizedlist>
  <listitem><simpara><ulink url="http://www.gnu.org/software/emacs/manual/html_node/emacs/External-Lisp.html"><function>run-lisp</function></ulink></simpara></listitem>
  <listitem><simpara>&slime;</simpara></listitem>
  <listitem><simpara>&ilisp;</simpara></listitem>
  <listitem><simpara><ulink url="http://cl-cookbook.sourceforge.net/windows.html">The Common Lisp Cookbook</ulink></simpara></listitem>
</itemizedlist></answer>
<answer><label>non-&emacs;-based</label><itemizedlist>
  <listitem><simpara><ulink url="google">VisualCLisp</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://jabberwocky.sourceforge.net/">Jabberwocky</ulink></simpara></listitem>
  <listitem><simpara><ulink url="http://gclisp.sourceforge.net/">GClisp</ulink></simpara></listitem>
  <listitem><simpara>&phemlock;</simpara></listitem>
</itemizedlist></answer></qandaentry>


<qandaentry id="faq-opt"><question id="faq-opt-q"><simpara>What are the
   command line arguments?</simpara></question>
<answer><para>See <olink targetdoc="man"/>.</para></answer></qandaentry>


<qandaentry id="faq-debugger"><question id="faq-debugger-q"><simpara>How
   do I get out of the debugger?</simpara></question>
<answer><para>See <xref linkend="debugger"/>.</para></answer></qandaentry>


<qandaentry id="faq-ext"><question id="faq-ext-q"><simpara>What &clisp;
   extensions are available?</simpara></question>
<answer><label>bundled</label><simpara>Quite a few modules are
  <link linkend="included-modules">included</link> with &clisp;,
  pass <option>--with-module=...</option> to &configure;
  to build them and see <xref linkend="faq-modules"/>.</simpara></answer>
<answer><label>3rd party</label>
 <simpara>See the <emphasis>incomplete</emphasis> list of
  <ulink url="http://clisp.org/resources.html#software"><quote>Common
    Lisp software running in &clisp;</quote></ulink>.</simpara></answer>
<answer><label><acronym>DIY<alt>Do It Yourself</alt></acronym></label>
 <simpara>See <xref linkend="modules"/> and <xref linkend="dffi"/>
  for information on how to interface with external &c-lang; libraries.
</simpara></answer>
<answer><label>&http;</label><itemizedlist><title>Very Frequently Asked!</title>
  <listitem><simpara>&clisp; comes with
    <filename role="clisp-cvs">src/inspect.lisp</filename>
    which implements a rudimentary &http; server</simpara></listitem>
  <listitem><simpara><ulink url="http://clocc.sourceforge.net/clocc/src/donc/http.lisp">CLOCC/src/donc/</ulink> has an &http; server</simpara></listitem>
  <listitem><simpara><ulink url="http://clocc.sourceforge.net/clocc/src/cllib/url.lisp">CLOCC/src/cllib/</ulink> handles URLs</simpara></listitem>
  <listitem><simpara><ulink url="http://www.cliki.net/mod_lisp">mod_lisp</ulink>
    hooks lisp into &apache;</simpara></listitem>
  <listitem><simpara><ulink url="http://www.cliki.net/HTTP%20dot%20LSP">Object-Oriented HTTP server for &clisp;</ulink></simpara></listitem>
 </itemizedlist>
 <para>Both <ulink url="http://allegroserve.sourceforge.net/">AllegroServe</ulink>
  and <ulink url="http://www.cl-http.org:8001/cl-http/">CL-HTTP</ulink>
  require <link linkend="mt">multithreading</link> and do not work
  with &clisp; yet.</para></answer></qandaentry>


<qandaentry id="faq-rc"><question id="faq-rc-q"><simpara>Where is the
   init (<quote>RC</quote>) file on my platform?</simpara></question>
<answer><para>Read the file <filename>&lt;clisp.html#opt-norc&gt;</filename>
  in your build directory or binary distribution (this is the version of
  the user manual <olink targetdoc="man"/> for your platform).</para>
</answer></qandaentry>


<qandaentry id="faq-modules"><question id="faq-modules-q"><simpara>Where
   are the modules with which I built &clisp;?</simpara></question>
<answer><para>In the &full; &linkset;. Run &clisp; like this:
  <screen>&sh-prompt; &clisp-cmd; &opt-K; full</screen></para>
 <para>Unless your &clisp; was configured with option &without-dynmod;, you
  should instead use <code>(&require-my; &name-r;)</code> where &name-r; is
  a &string-t;, e.g., <quote>&rawsock-mod;</quote>, or <quote>clx</quote>
  (for either &new-clx; or &mit-clx;, whichever is installed),
  or <quote>linux</quote> (for &glibc-mod;) etc.
  This is more reliable because the &full; &linkset; may include many modules
  which you do not need and, in fact, &cannot-e; use because they require
  external libraries not installed on your system.</para>
 <para>Making &base; the default &linkset; has some advantages:<variablelist>
   <varlistentry><term>Shared Library Hell</term>
    <listitem><simpara>Avoid problems when a module requires a shared
      library, and that shared library is not present (or is present but
      with wrong version) on your system.</simpara></listitem></varlistentry>
   <varlistentry><term>Smaller Images Are Faster</term>
    <listitem><simpara>Adding things to the heap increases working
      set size causing a slowdown, which is especially important for
      small to medium applications.</simpara></listitem> </varlistentry>
   <varlistentry><term>Uniform User Experience</term>
    <listitem><simpara>Composition of the &full; &linkset; is up to the
      packager, while &base; is the same on all platforms.
 </simpara></listitem></varlistentry></variablelist></para>
 <para>See <ulink url="ml">clisp-list</ulink> for more information
  (<ulink role="sfmail" url="200407212204.44395.bruno%40clisp.org"/>/<ulink role="gmane" url="general/8691"/>).</para>
</answer></qandaentry>


<qandaentry id="faq-gui"><question id="faq-gui-q"><simpara>How do I create
   a <acronym>GUI<alt>Graphical User Interface</alt></acronym>
   for my &clisp; program?</simpara></question>
 <answer><para>Use module &gtk2-mod;: create <filename>ui.glade</filename>
   with &glade;, then do<screen>
&sh-prompt; ./configure --with-module=gtk2 --cbc build-gtk
&sh-prompt; ./build-gtk/clisp &opt-K; full &opt-x; '(gtk:run-glade-file "ui.glade")'</screen></para>
  <para>There are many other options,
  see <ulink url="http://clisp.org/resources.html#software">"Common
    Lisp software running in &clisp;"</ulink>.</para></answer></qandaentry>
</qandadiv>


<qandadiv id="faq-delivery"><title>Application Delivery</title>

<qandaentry id="faq-exec"><question id="faq-exec-q"><simpara>How do I
   create an executable file with all my code in it?</simpara></question>
<answer><para>Use &savemem;, see also <xref linkend="quickstart"/>.
</para></answer></qandaentry>


<qandaentry id="faq-licensing"><question id="faq-licensing-q"><simpara>When
   I deliver my application with &clisp;, does it have to be covered by
   the &gnu; &gpl;?</simpara></question>
<answer><para>Not necessarily.</para>

<para>&clisp; is <ulink url="http://www.gnu.org/philosophy/free-sw.html">Free
  Software</ulink>, covered by the &gnu; &gpl;, with special
 terms governing the distribution of applications that run in &clisp;.
 The precise terms can be found in the
 <filename role="clisp-cvs">COPYRIGHT</filename>
 file contained in the source and binary distributions of &clisp;.
 Here is an informal clarification of what these terms mean in practice.
 Please refer to the said <filename role="clisp-cvs">COPYRIGHT</filename>
 file when in doubt.</para>

<para>In many cases, &clisp; does not force an application to be covered
 by the &gnu; &gpl;. Nevertheless, we encourage you to release your software
 under an open source license. The benefits of such a license for
 your users are numerous, in particular they are free to modify the
 application when their needs/requirements change, and they are free to
 recompile the application when they upgrade their machine or operating
 system.</para>

<para>&clisp; <emphasis>extensions</emphasis>, i.e. programs which need
 to access non-portable &clisp; internal symbols (in the packages
 &sys-pac;, &clos-pac;, &ffi-pac;, etc), must be covered by &gnu; &gpl;
 as well.</para>

<para>Other programs running in &clisp; have to or need not to be placed
 under &gnu; &gpl;, depending on their distribution form:

<itemizedlist>
 <listitem><simpara>Programs distributed as Lisp source or &fasl-file;
   files can be distributed without restrictions coming from &clisp;.
 </simpara></listitem>
 <listitem><simpara>Programs distributed as &clisp; &mem-image;s can be
  distributed only if accompanied with the non-&clisp; &fasl-file; files
  which make up the &mem-image;, and a &make-file; (or clear textual
  instructions) for rebuilding the &mem-image;.</simpara></listitem>
 <listitem><simpara>If you need to distribute a modified &clisp;
  executable (for example, incorporating additional &module;s written
  in &c-lang;), you must distribute its full source under &gnu; &gpl;.
  If you are not satisfied with this, you can instead put the additional
  &module;s into a separate (non-&clisp;) program, with which your Lisp
  program will communicate via &socket-stream;s.</simpara></listitem>
</itemizedlist></para>
</answer></qandaentry>
</qandadiv>

<qandadiv id="faq-trouble"><title>Troubles</title>

<qandaentry id="faq-bin-distrib"><question id="faq-bin-distrib-q"><para>Where
   is the binary distribution for my platform?</para></question>
<answer><para>The &clisp; maintainers do not offer &clisp; binary
  distributions, we believe that software packagers specializing on a
  particular platform are in a better position to provide quality binaries.
  Indeed, the section <quote>Get CLISP</quote> on the &clisp;'s home
  page points to &clisp; packages for all major &linux; and &bsd;
  variants.</para>
 <para>The only exception is &win32; for which there is no centralized
  packager: <emphasis>usually</emphasis>, after each &clisp; release,
  a &clisp; user <emphasis>volunteers</emphasis> to build a &win32;
  binary package, which we then distribute at
  <ulink url="http://sourceforge.net/project/showfiles.php?group_id=1355"/>.
</para></answer></qandaentry>


<qandaentry id="faq-bin-distrib-prev"><question id="faq-bin-distrib-prev-q">
  <para>But a previous release <emphasis>had</emphasis> a binary
   distribution for my platform, why does not the current one?</para></question>
<answer><para>It was probably contributed by a user who did not (yet?)
  contribute a binary distribution for the current release. You can
  find out who contributed a specific binary distribution by looking at
  the release notes in the &sf;
  <ulink url="http://sourceforge.net/project/showfiles.php?group_id=1355"
         >Files</ulink> section.</para></answer></qandaentry>


<qandaentry id="faq-build"><question id="faq-build-q"><para>Why does not
   &clisp; build on my platform?</para></question>
<answer><para>Please see file
  <filename role="clisp-cvs">unix/PLATFORMS</filename> in your source
  distribution for information about some known troublesome platforms
  as well as instructions on porting &clisp; to new platforms.</para>
</answer></qandaentry>


<qandaentry id="faq-with-prefix"><question id="faq-with-prefix-q"><para>
   Why is the <option>--with-libsigsegv-prefix</option> option ignored
   by the &configure; script on my 64-bit machine?</para></question>
<answer><para>See a note on <quote>bi-arch systems</quote> in section 2 of
 <filename role="clisp-cvs">unix/INSTALL</filename> in your source distribution
  (for the impatient: pass <option>--libdir=='${exec_prefix}/lib64'</option>
    to the &libsigsegv; &configure;).</para>
 <para>See these threads which discuss the situation in depth:<simplelist>
   <member><ulink url="http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/14565"/></member>
   <member><ulink url="http://thread.gmane.org/gmane.comp.sysutils.autoconf.general/10827"/></member>
</simplelist></para></answer></qandaentry>


<qandaentry id="faq-enc-err">
 <blockinfo><title>What do charset errors mean?</title></blockinfo>
 <question id="faq-enc-err-q"><para>What do these error messages
    mean: <quote><computeroutput>invalid byte #x94 in
    CHARSET:ASCII conversion</computeroutput></quote> and
   <quote><computeroutput>character #\u00B3 cannot be represented in the
    character set CHARSET:ASCII</computeroutput></quote>?</para></question>
<answer><para>This means that you are trying to read (<quote>invalid
 byte</quote>) or write (<quote>character cannot be represented</quote>)
 a non-&ascii; character from (or to) a character stream which has
 &ascii; &extfmt;. The default is described in
  <olink targetdoc="man" targetptr="opt-enc"/>.</para>

<para>This may also be caused by filesystem access.
 If you have files with names incompatible with your &path-enc;,
 filesystem access (e.g., &directory;) will &signal; this &error-t;.
 You will need to set &path-enc; or pass &opt-E; to &clisp;.
 Using a &enc1-1;, such as &iso-8859-1;,
 should help you avoid this error.</para>

<para>Note that this error may be signaled by the <quote>Print</quote>
 part of the &repl; and &not-e; by the function you call.
 E.g., if file <filename>"foo"</filename> contains non-&ascii; characters,
 you will see such an error when you type<programlisting language="lisp">
(&with-open-file; (s "foo" :direction :input &extfmt; &iso-8859-1;)
  (&read-line; s))
</programlisting> If instead you type <programlisting language="lisp">
(&with-open-file; (s "foo" :direction :input &extfmt; &iso-8859-1;)
  (&setq; l (&read-line; s))
  &nil;)
</programlisting> &clisp; will just print &nil; and signal the error
 when you type <literal>l</literal>.</para></answer></qandaentry>


<qandaentry id="faq-rl-tab"><question id="faq-rl-tab-q"><para>What does
   this message mean: <quote><computeroutput>Display all 1259
     possibilities? (y or n)</computeroutput></quote></para></question>
 <answer><para>&clisp; uses &readline; for command line editing and
   <olink targetdoc="man" targetptr="completion">completion</olink>.
   You get this <quote>Display all 1259 possibilities</quote> message
   (and sometimes many screens of symbols) when you
   hit &tab-c; too many times in an inappropriate place.
 <olink targetdoc="man" targetptr="opt-ilisp">You can turn this feature
  off</olink> if you are using &emacs;.  It is a good idea
 <ulink url="http://www.w3.org/MarkUp/html3/literal.html">not</ulink> to
 use &tab-c;s in your code.</para></answer></qandaentry>


<qandaentry id="faq-no-rl"><question id="faq-no-rl-q"><para>Why does
   not command line editing work?</para></question>
<answer><para>See <xref linkend="readline"/>.</para></answer></qandaentry>


<qandaentry id="faq-stack"><question id="faq-stack-q"><simpara>How do I
   avoid stack overflow?</simpara></question>
<answer><para>&clisp; has <link linkend="vm"><emphasis>two</emphasis>
   stacks</link>, the <quote>program stack</quote> and the <quote>lisp
   stack</quote>, and both may occasionally overflow.</para></answer>
<answer><label>Generic</label><itemizedlist>
  <listitem><simpara>You will always get a stack overflow when you try
    to print a <ulink url="clhs/glo">circular</ulink> object (&list-t;,
    &structure-object-t;, &vector-t; etc) and &print-circle-var; is &nil;.
    Just set &print-circle-var; to &t;.</simpara></listitem>
  <listitem><simpara>You will always get a stack overflow on infinite
    recursion.</simpara></listitem>
  <listitem><simpara>Some simple functions (like
    <ulink url="http://en.wikipedia.org/wiki/Ackermann_function">Ackermann's</ulink>)
    recurse more than you might expect and can run out of stack on
    relatively small inputs.</simpara></listitem>
  <listitem><simpara>Compiled code uses less stack (and memory) and is
    faster.</simpara></listitem>
  <listitem><simpara>If you really do need more Lisp stack, you can
    increase it by telling &clisp; to pre-allocate more memory using
    &opt-m; or &make-thread;.</simpara></listitem>
  <listitem><simpara>If you get a segmentation fault after (or instead
    of) a <quote>program stack overflow</quote> message, please make
    sure that you had &libsigsegv; installed when you configured and
    built &clisp;.</simpara></listitem></itemizedlist></answer>

<answer><label>Specific</label><variablelist>
 <varlistentry><term>&win32-only;</term>
  <listitem><para>You have several option, use whichever is applicable
    to your situation:<itemizedlist><listitem><simpara>modify the
       global <filename>SYSTEM.INI</filename></simpara></listitem>
     <listitem><simpara>modify the <filename>PIF</filename>
       that you use to invoke &clisp;
       (<ulink role="sfmail" url="3D2600BB.1CDBE9D0%40freenet.de"/>/<ulink role="gmane" url="general/4656"/>)</simpara></listitem>
     <listitem><simpara>or set the program stack (of the run
       times <command>base/lisp.exe</command> or
       <command>full/lisp.exe</command>, &not-e; the driver
       <command>clisp.exe</command>) using <command>editbin</command>
       (<ulink role="sfmail" url="sa0ptz4o4e3.fsf%40glip.premonitia.com"/>/<ulink role="gmane" url="general/5523"/>); you can find the
       current stack size using <command>dumpbin</command>.
 </simpara></listitem></itemizedlist></para></listitem></varlistentry>
 <varlistentry><term>&unix-only;</term>
  <listitem><simpara>Increase program stack with <command>ulimit
     -s</command> (or <command>limit stacksize</command> if you are using
    <ulink url="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/"
           ><literal>csh</literal></ulink>) to at least 8 MB.
</simpara></listitem></varlistentry></variablelist></answer></qandaentry>

<qandaentry id="faq-self-mod"><question id="faq-self-mod-q">
  <simpara>Why does my function return different values on each
   invocation and then hangs forever?</simpara></question>
<answer><para>The following code modifies itself:
<programlisting language="lisp">(defun my-func ()<lineannotation>modifies internal data!</lineannotation>
  (let ((var '(a b c)))
    (nconc var '(1 2 3))))</programlisting>
and will not work as one would naively expect:<programlisting language="lisp">
(&setq; &print-circle-var; &t;)
(&function-lambda-expression; #'my-func)
<computeroutput>(LAMBDA NIL (DECLARE (SYSTEM::IN-DEFUN MY-FUNC))
 (BLOCK MY-FUNC (LET ((VAR '(A B C))) (NCONC VAR '(1 2 3)))))</computeroutput>
(my-func)<lineannotation>the first invocation</lineannotation>
<computeroutput>(a b c 1 2 3)</computeroutput><lineannotation>modifies the internal data:</lineannotation>
(&function-lambda-expression; #'my-func)
<computeroutput>(LAMBDA NIL (DECLARE (SYSTEM::IN-DEFUN MY-FUNC))
 (BLOCK MY-FUNC (LET ((VAR '(A B C . #1=(1 2 3)))) (NCONC VAR '#1#))))</computeroutput><lineannotation>note shared structure!</lineannotation>
(my-func)
<computeroutput>(A B C . #1=(1 2 3 . #1#))</computeroutput><lineannotation><ulink url="clhs/glo">circular list</ulink>!</lineannotation>
(function-lambda-expression #'my-func )
<computeroutput>(LAMBDA NIL (DECLARE (SYSTEM::IN-DEFUN MY-FUNC))
 (BLOCK MY-FUNC (LET ((VAR '(A B C . #1=(1 2 3 . #1#)))) (NCONC VAR '#1#))))</computeroutput><lineannotation>note circular value of var</lineannotation>
(my-func)<lineannotation>hangs because &nconc; cannot handle a circular argument</lineannotation></programlisting></para>

<para>Instead you must do
<programlisting language="lisp">(defun my-func ()
  (let ((var (copy-list '(a b c))))
    (nconc var (copy-list '(1 2 3)))))</programlisting></para>

<para>&disassemble; will show the constants in your compiled functions
(see <xref linkend="bytecode"/> for the explanation of the &disassemble;
output.)  As you see above, &function-lambda-expression; works for the
interpreted ones.</para>

<para>See <ulink url="http://norvig.com/luv-slides.ps">Lisp Programming
  Style</ulink> for more useful information.</para>
</answer></qandaentry>


<qandaentry id="faq-fp">
 <blockinfo><title>Is floating point arithmetic broken?</title></blockinfo>
 <question id="faq-fp-q"><para>Why don't floating point arithmetic
   return what I want?</para><programlisting language="lisp">
(- 1.1 0.9)
<computeroutput>0.20000005</computeroutput>
</programlisting></question>
<answer><label>inexact</label><para>Floating point arithmetic is
  inherently <emphasis>inexact</emphasis>, so this &not-e; a bug,
  at least not a bug in &clisp;.
  You may argue that this is a bug in &ieee-bfp;,
  but, before you do, please make sure that you do know
  <ulink url="http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html">What Every Computer Scientist Should Know About Floating-Point
  Arithmetic</ulink> (or are at least familiar with the
  <ulink url="http://floating-point-gui.de/">light version</ulink> thereof).
 </para><para>See also <ulink url="ml">clisp-list</ulink>
  (<ulink role="sfmail" url="17121.26476.75643.47774%40thalassa.informatimago.com"/>/<ulink role="gmane" url="general/9850"/>).</para></answer>

<answer><label>exact</label><para>If you want <emphasis>exact</emphasis>
 calculations, use &rational-t;s:<programlisting language="lisp">
(- 11/10 9/10)
<computeroutput>1/5</computeroutput></programlisting>
</para></answer></qandaentry>


<qandaentry id="faq-random">
 <blockinfo><title>Is &random; broken?</title></blockinfo>
 <question id="faq-random-q"><para>Why does
   <screen>&sh-prompt; &clisp-cmd; &opt-x; '(&random; 1s0)'</screen>
   always print the same number?</para></question>
<answer><para>Reproducibility is important.
  See <xref linkend="random-state"/>.</para></answer></qandaentry>


<qandaentry id="faq-pp-newline">
 <question id="faq-pp-newline-q"><para>Why is an extra line break
   inserted by the pretty printer?</para></question>
<answer><para>See <xref linkend="ppr-first-newline"/>.</para>
 <para>For example, here you are pretty-printing two objects: a
  one-liner <keysym>#\Q</keysym> and a two-liner &cr-c;+&lf-c;,
  and a line break is inserted between them so that they are printed on
  separate lines: <programlisting language="lisp">
(defparameter crlf (coerce '(#\Return #\Linefeed) 'string))
<computeroutput>CRLF</computeroutput>
(map 'list #'char-code (format nil "Q~a" crlf))
<computeroutput>(81 10 13 10)</computeroutput><lineannotation>not (81 13 10) !</lineannotation>
</programlisting></para>
 <para>When you want &cr-c;+&lf-c;-terminated lines, use &extfmt; &dos-k;
  argument when opening your &stream-t;s.</para>
</answer></qandaentry>


<qandaentry id="faq-warning">
 <question id="faq-warning-q"><para>How do I disable this annoying
   warning?</para></question>
<answer><para>&clisp; often issues &warning-t;s when it encounters
  suspicious behavior.  It is best to fix your code rather than to
  suppress them.  To figure out where the warning is coming from, do
  <code>(&setq; &break-on-signals-var; '&warning-t;)</code> and examine
  the stack in the &debugger; to see where the warning is coming from.</para>
 <para>If everything else fails, read the
 <link linkend="impnotes-top">manual</link>.</para></answer>
</qandaentry>


<qandaentry id="faq-scope"><question id="faq-scope-q">
  <para>Why does &defvar; affect previously defined lexical closures?</para>
  <programlisting language="lisp">
(defun adder (val) (lambda (x) (+ x val)))
<computeroutput>ADDER</computeroutput>
(setq add-10 (adder 10))
<computeroutput>ADD-10</computeroutput>
(funcall add-10 32)
<computeroutput>42</computeroutput><lineannotation>as expected</lineannotation>
(defvar val 12)
<computeroutput>VAL</computeroutput>
(funcall add-10 0)
<computeroutput>12</computeroutput><lineannotation>why not 10?!</lineannotation>
</programlisting></question>
<answer><label>Explanation</label>
 <para>The above code does not conform to &ansi-cl;, therefore &clisp;
  can produce arbitrary results.
  See <xref linkend="semantic-constraints"/>.</para></answer>
<answer><label>Remedy</label>
 <para>Always follow the naming convention for global special variables
  defined by &defvar; and &defparameter; (e.g., <varname>*FOO*</varname>)
  and &defconstant; (e.g., <varname>+BAR+</varname>).</para></answer>
<answer><label>More</label>
 <simplelist><member><ulink role="sfmail" url="470A4B2A.30306%40gnu.org"/>/<ulink role="gmane" url="general/11945"/></member>
  <member><ulink role="sfmail" url="200710090043.01871.bruno%40clisp.org"/>/<ulink role="gmane" url="general/11949"/></member>
</simplelist></answer>
</qandaentry>


<qandaentry id="faq-bad-error"><question id="faq-bad-error-q">
  <simpara>The error message is not helpful!</simpara></question>
<answer><para>Sometimes an error message contains a compound object
  whose content you want to examine. Often this object will be available
  for &inspect-my;ion via the <command>Inspect</command> command (see
  <xref linkend="debugger-deb-step-1"/>). E.g., <screen>
*** - READ: input stream #&lt;INPUT STRING-INPUT-STREAM&gt; ends within an object
The following restarts are available:
ABORT          :R1      ABORT
<prompt>Break 4 [1]&gt;</prompt> <userinput>:i</userinput>
#&lt;SYSTEM::SIMPLE-END-OF-FILE #x000333CB82F8&gt;:  standard object
 type: SYSTEM::SIMPLE-END-OF-FILE
0 [$STREAM]:  #&lt;INPUT STRING-INPUT-STREAM&gt;
1 [$FORMAT-CONTROL]:
"~S: input stream ~S ends within an object
"
2 [$FORMAT-ARGUMENTS]:  (READ #&lt;INPUT STRING-INPUT-STREAM&gt;)
<prompt>INSPECT-- type :h for help; :q to return to the REPL ---&gt;</prompt> <userinput>0</userinput>
#&lt;INPUT STRING-INPUT-STREAM&gt;:  atom
 type: STRING-STREAM
 class: #1=#&lt;BUILT-IN-CLASS STRING-STREAM&gt;
<prompt>INSPECT-- type :h for help; :q to return to the REPL ---&gt;</prompt> <userinput>:d</userinput>

#&lt;INPUT STRING-INPUT-STREAM&gt; is an input-stream. It reads from "(foo" from 0 to 4 at 4.
</screen></para></answer></qandaentry>


<qandaentry id="faq-other-problem"><question id="faq-other-problem-q">
  <simpara>Why is the function <function>FOO</function>
   broken?!</simpara></question>
<answer><para>When confronted with unexpected behavior,
  try looking in the <xref linkend="impnotes-top"/>.</para>
<para>E.g., &clisp; &directory; is different from the &cmucl;
 implementation, so, to find out how to get the results you want,
 you should search the &clisp; implementation notes for "DIRECTORY".</para>
<para>Alternatively, since the implementation notes are organized in
 parallel to the &ansi-cl;, and &directory; belongs to the
 <ulink role="clhs" url="chap-20">Chapter 20</ulink> in &ansi-cl;,
 you can just go to <xref linkend="files"/> in impnotes and look
 for "DIRECTORY" <link linkend="directory">there</link>.
</para></answer></qandaentry>

</qandadiv>

</qandaset>

</appendix>

