--pgp-sign-Multipart_Sun_Feb__7_02:21:54_2010-1
Content-Type: text/plain; charset=US-ASCII

At Sat, 6 Feb 2010 22:18:12 +0900,
matz wrote:
> The name #each_entry corresponds to the existing method #entries.
> enum.each_entry works just like enum.entries.each without array
> allocation.  I think this is a good rationale.  In contrast, tuple is
> a new name and concept to Enumerable and even Ruby.

I don't think #entries is a good name by now either, since we only use
the term "item" and "element" in our documents to indicate stuff that
comes out of an iterator.  The historical name #entries never became
much of a problem just because there was #to_a, the obvious and much
more popular alternative.  However, extending the use of "entry" at
this stage seemed like a submarine rising to me, making me feel
worried about name clashes against today's existing code.

On second thought, it may be a needless worry because "entries" sound
like, among others (such as "categories" and "authors" in my "blog"
example) the most likely items an object would provide via each(),
which means each_entry() would likely be an alias for each().  Given
those assumptions, so long as each yielded "entry" is an s-value there
would be no problem to use "each_entry" for the purpose you intend.

In any case, running through these thoughts would be nice to take
place.  It's just my two yen.

> |>     * lib/set.rb (Set#merge): use Enumerable#each_entry to implement
> |>       Set compatible to 1.8 behavior.  [ruby-core:27985]
> |
> |It is high time for programmers to face the fact that yielding
> |multiple values and yielding an array are no longer the same after
> |1.9.  Set expects the incoming object, although not documented, to be
> |a stream of single objects.  Passing a multiple value stream shall
> |result in undefined behavior.  I would rather add such a note to the
> |documentation instead of adding a kluge.
>
> Don't call it a kludge.  After serious consideration, I thought the
> new behavior is nicer for users.  But after all, set.rb is your

Kluge might not be a good choice of word, but if you are recommending
the wide use of each_entry for a certain purpose, please make a
proposal.  It seemed to me you were in such a rush to add a new method
just to solve one problem in one library, which I, the author, didn't
even consider a bug.

> product, so I don't force you.  You can make set.rb not to use
> each_entry again (with documentation), if you don't agree with me
> here.  But I want you to leave is_a? removal.

I'm fine with that.  It was not me who put the is_a? test there, but
someone did without me noticed.  Given that, do you think a duck type
test (respond_to?) is needed when the due call follows soon?

> |If you are going to make a revamp in m-value/a-value invocation in
> |2.0, it has to be done on a firm, subtly though-tout grand design.
> |Instant solutions in the name of compatibility would spoil such an
> |opportunity and become a burden in the future.
>
> The m-value/a-value invocation was thoroughly discussed through 1.9
> development.  There will be no revamp, as far as I believe.

Okay, thanks for the clarification.

--
Akinori MUSHA / http://akinori.org/

--pgp-sign-Multipart_Sun_Feb__7_02:21:54_2010-1
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iEYEABECAAYFAkttpTIACgkQkgvvx5/Z4e70lQCg2kd8f7V5UHpdAXN+3XzjmrS/
8Y4AoKkvOOXOX6GcOIS9Jkp5yaTW9guV
eN
-----END PGP SIGNATURE-----

--pgp-sign-Multipart_Sun_Feb__7_02:21:54_2010-1--