Phobos usability with text files
bearophile
bearophileHUGS at lycos.com
Sun Dec 26 10:05:04 PST 2010
Michel Fortin:
> > But you don't need a new string for each line to evaluate max over line
> > lengths; the current byLine works.
>
> That's true.
>
>
> > Generally I think buffer reuse in byLine() is too valuable to let go.
>
> I also agree it's wasteful.
See my answers to Andrei.
> But I think bearophile's experiment has illustrated two noteworthy
> problems. The first issue is that calling filter! on the
> already-consumed result of byLine() gives you a seg fault. I reproduced
> this locally, but haven't pinpointed the problem.
Maybe beside that one there is yet another problem, I have had problems in creating a version that opens and scans the file twice.
> The second one is this:
>
> array(file.byline())
>
> which gives a wrong result because of the buffer reuse. Either it
> should not compile or it should idup every line (both of which are not
> entirely satisfactory, but they're better than getting wrong results).
I don't agree. dupping every line is like performing a limited deep-dup, and this is not the job of array().
Not compiling again is not the job of array(). So the problem needs to be solved elsewhere, array() is OK, I think.
> I think a range should be able to express if the value can be reused or
> not. If the value can't be reused, then the algorithm should either not
> instantiate, or in some cases it might create a copy.
Generally in a nonfunctional language iterables need to exhaust :-)
Bye,
bearophile
More information about the Digitalmars-d
mailing list