On 10/19/06, dblack / wobblini.net <dblack / wobblini.net> wrote:
> Hi --
>
> On Thu, 19 Oct 2006, Yukihiro Matsumoto wrote:
>
> > Hi,
> >
> > In message "Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8)"
> >    on Thu, 19 Oct 2006 20:16:54 +0900, dblack / wobblini.net writes:
> >
> > |There are two separate questions involved, though:
> > |
> > |   1. Should there be a method to enumerate over the lines without
> > |      creating an intermediate array?
> > |   2. Should that method be called "lines"?
> > |
> > |I would say yes to #1, and no to #2.
> >
> > The reason behind no to #2 is that readlines returns an array, right?
> > Then, what if I change readlines to return Enumerator?
>
> I still think the naming is very unexpected.  I know it's
> old-fashioned and naive to expect "things" to be a collection of
> things :-)  But I really do have that expectation.

I think it's rather nice, and it actually /is/ a collection of
"things", although more of what may be thought of as a lazy list that
will give you another one of the "things" each time you need it, not
all at once in an array.  One really has to get away from treating all
collections as if they're always going to be arrays of "things".
Sadly, it's the C in us that makes us think/read/talk in that manner
[1].

Anyway, I'd love to be able to write

  IO.read(file).lines.each{ |line| puts line if line =~ pattern }.

I think that the lines.each is just as transparent as each_line is/was, i.e.,

  IO.read(file).each_line{ |line| puts line if line =~ pattern },

if not more so as you don't have the doubled "line".  It may seem to
be doing things backwards, but there are many cases where you do that,
such as the suffixed if-expression in the examples above.

All ways of avoiding underscores get an automatic +1 from me
(underscore = left pinky lower row + right pinky home row = hard to
type, while dot = left middle-finger upper row = easy to type [2]),
though, so perhaps I'm a bit biased.

[1] Further discussed in http://steve.yegge.googlepages.com/allocation-styles.
[2] Both these sequences are specific to a DVORAK keyboard-layout.

  nikolai