Subject: Re: Variable as first argument in format.
From: Erik Naggum <erik@naggum.net>
Date: Sat, 25 May 2002 16:38:56 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3231333527541173@naggum.net>

* Erik Naggum
> t is a designator for a stream so you do not have to write
> *standard-output* out in full.

* "Paul F. Dietz" <dietz@dls.net>
| Does the output stream designator T refer to *terminal-io*?

  Note that it is not an output stream designator.  (The standard says
  "nil, t, a stream, or a string with a fill pointer".)  t designates
  just what I said, *standard-output*.
  
| The documentation in the CLHS for FORMAT is unclear,

  I disagree, but it seems that you bring with you assumptions from prior
  successes in reading of the standard.  This should not be discouraged
  outright, but watching for clues that you must look closer is just as
  important.  Note that the Affected-by list for format does not include
  *terminal-io*, but does include *standard-output*.  This should be the
  all-important clue.

  It may have been useful if the standard said so in the entry on format
  itself, but since format is covered elsewhere, the no-redundancy rule
  excludes redundant and superfluous repetition of previously stated
  requirements.  It does say "See section 22.3 on Formatted Output",
  however.  (In case that is too hard, the pertinent sentence is: "If
  destination is t, the output is sent to standard output.")

| but for functions like WRITE this is the case.

  For functions that accept an output stream designator (look it up) in
  their specification, it is quite trut that nil means *standard-output*,
  and t means *terminal-io*, but again, please note that format does not
  use an output stream designator and that nil has a _very_ different
  meaning than it has for write.
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.

  70 percent of American adults do not understand the scientific process.