On Saturday, 2 September 2023 at 17:13:37 UTC+2, Kaz Kylheku wrote:
> On 2023-09-02,
redsk...@gmail.com <
redsk...@gmail.com> wrote:
> > Stream designators are conveniences when creating source code. It makes for compact expression.
> > [snip]
> The definition of synonym streams doesn't mention stream designators.
> The dynamic variable held by the synonym stream is described as having
> a stream value, not a stream designator value.
> [snip]
What you describe is what I would say is the most natural way of understanding this topic. That is, the variable in a SYNONYM-STREAM must have STREAMs as values. Simplifies the dynamics, and eliminates some potential problematic situations.
But as to the object designating a stream in FORMAT, that is, strictly speaking, not a stream designator. Because, as stream designators both T and NIL have a "usage-independent" specific denotations. Use of NIL in FORMAT does not conform with NIL as a *stream* *designator*, as it has a very specific meaning for FORMAT.
So for FORMAT, the denotation of the stream indicator is "usage-dependent", and this stream indicator is resolved to a stream in a very unique way.
This anomaly for FORMAT may be just the remnants of an historical accident, where providers of Common Lisp implementations were not willing to compromise during the standardization process, so we were left with yet another exception in the CL standard.