Phobos packages a bit confusing

Pelle Månsson pelle.mansson at gmail.com
Tue Dec 1 04:44:20 PST 2009


Denis Koroskin wrote:
> On Tue, 01 Dec 2009 15:22:23 +0300, Pelle Månsson 
> <pelle.mansson at gmail.com> wrote:
> 
>> bearophile wrote:
>>> Andrei Alexandrescu:
>>>> Why not just reuse the same buffer as the previous line? That 
>>>> approach is inherently adaptive.
>>>  That approach is unsafe. xfile yields byte strings, in D1. When I 
>>> write 10 lines long scripts I usually don't need every bit of 
>>> optimization, I need the less bug-prone code as possible, because the 
>>> thing I have to optimize is my coding time. In D1 strings are 
>>> mutable, so if you put them in an AA as keys you must dup them to 
>>> avoid bugs if you reuse the same buffer.
>>>
>>
>> You'll have to .dup them if you want to use them as non-views always. 
>> I for one like that approach more.
>>
>> Why call it xfile and not just open?
>>
>>>> And why is there a need for xstdin vs. xfile? Stdin _is_ a file.<
>>>  I use it like this:
>>> foreach (line; xstdin) { ... }
>>> line is a string with newline at the end.
>>> I know this isn't the best design, but it's the most handy for my 
>>> purposes. I need to do a limited number of things in those scripts 
>>> and iterating over the lines of a fine and over the lines of the 
>>> stdin are the only two that matter.
>>>  Bye,
>>> bearophile
> 
> In his notation, xfoo is a lazy version of foo (i.e. it reads file in 
> chunks as opposed to reading the whole file at once).
> 
> So you are essentially asking, "why file instead of open?". What's the 
> difference? It's a bikeshed discussion, but I believe file("filename") 
> is more clear than open("filename"). Besides, I'm used to "close" 
> everything I "open", which is not suitable here/.

File looks like a constructor. You are not constructing a file you open 
for reading.

Also, saying that you close everything you open, are you deallocating 
everything you allocate as well? I feel we have moved past such symmetry.



More information about the Digitalmars-d mailing list