From: Richard M Kreuter
Subject: Is READ-LINE required to return a fresh string?
Date: 
Message-ID: <871w0atbat.fsf@progn.net>
Hi,

I don't think I see anything in the READ-LINE specification that
requires the first return value to be a fresh string.  Does anybody
else see such a requirement?  (Otherwise, are conforming programs
supposed to copy any line they want to modify or hold on to?)

--
RmK

From: Rainer Joswig
Subject: Re: Is READ-LINE required to return a fresh string?
Date: 
Message-ID: <joswig-797F61.23275227082008@news-europe.giganews.com>
In article <··············@progn.net>,
 Richard M Kreuter <·······@progn.net> wrote:

> Hi,
> 
> I don't think I see anything in the READ-LINE specification that
> requires the first return value to be a fresh string.  Does anybody
> else see such a requirement?  (Otherwise, are conforming programs
> supposed to copy any line they want to modify or hold on to?)
> 
> --
> RmK

I also can't see it specified.

But I would expect CL:READ-LINE to return a fresh string
on each call.

I would also expect that once CL:READ-LINE returns a string
the user program can use it and change it without affecting
other read/write operations.

I can't remember seeing code that makes other assumptions.

Typical use would be to iterate over the lines of a stream
and collect all the read lines in some data structure.
I would expect that there is no reuse of strings going
on.

-- 
http://lispm.dyndns.org/
From: Scott Burson
Subject: Re: Is READ-LINE required to return a fresh string?
Date: 
Message-ID: <cdda97bd-5ab5-4645-9e4a-5c7f8507edc2@w24g2000prd.googlegroups.com>
On Aug 27, 2:27 pm, Rainer Joswig <······@lisp.de> wrote:
> In article <··············@progn.net>,
>  Richard M Kreuter <·······@progn.net> wrote:
>
> > Hi,
>
> > I don't think I see anything in the READ-LINE specification that
> > requires the first return value to be a fresh string.  Does anybody
> > else see such a requirement?  (Otherwise, are conforming programs
> > supposed to copy any line they want to modify or hold on to?)
>
> I also can't see it specified.
>
> But I would expect CL:READ-LINE to return a fresh string
> on each call.

I think this has to be considered the default in Lisp.  In order for
it to be allowable for a function that returns some object to reuse an
object it previously returned, the specification would have to say so
explicitly.  Hmm, I see the CLHS is not particularly consistent: the
page for CONS says "creates a fresh cons", and those for MAKE-ARRAY
and MAKE-INSTANCE say "creates and returns ..."; but that for LIST
simply says "returns a list containing the supplied objects", and
similarly the MAKE-STRING page just says "returns...".  Still, there's
no doubt that for LIST or MAKE-STRING to reuse a previously returned
list or string would be completely bizarre.

-- Scott