Object#singleton_class in Ruby 1.9?


#1

Hello,

I was under the impresssion that Ruby 1.9 will provide
Object#singleton_class (or #eigen_class or #meta_class), which would
save us the trouble of writing “class << self; self; end” everywhere.

But in Ruby 1.9.1-rc2, I do not see this:

RUBY_DESCRIPTION
=> “ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux]”

Object.instance_methods.grep(/class|singleton|eigen|meta/)
=> [:class, :singleton_methods, :define_singleton_method]

Was Object#singleton_class (or #eigen_class or #meta_class) planned for
Ruby 1.9 or 2.0?

Thanks for your consideration.


#2

Hi –

On Fri, 30 Jan 2009, Suraj K. wrote:

Object.instance_methods.grep(/class|singleton|eigen|meta/)
=> [:class, :singleton_methods, :define_singleton_method]

Was Object#singleton_class (or #eigen_class or #meta_class) planned for
Ruby 1.9 or 2.0?

Not that I remember hearing about. I’d certainly like to see it.

David


David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2)

http://www.wishsight.com => Independent, social wishlist management!


#3

Hi,

In message “Re: Object#singleton_class in Ruby 1.9?”
on Fri, 30 Jan 2009 20:15:17 +0900, “David A. Black”
removed_email_address@domain.invalid writes:

|> Was Object#singleton_class (or #eigen_class or #meta_class) planned for
|> Ruby 1.9 or 2.0?
|
|Not that I remember hearing about. I’d certainly like to see it.

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

          matz.

#4

On Fri, Jan 30, 2009 at 10:28 AM, Yukihiro M.
removed_email_address@domain.invalid wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

I wonder if this controversy has died down. There are people with
their favorites, sure, but does anyone really oppose singleton_class?

-greg


#5

On Jan 30, 2009, at 9:47 AM, Gregory B. wrote:

|> Ruby 1.9 or 2.0?
|
|Not that I remember hearing about. I’d certainly like to see it.

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

I wonder if this controversy has died down. There are people with
their favorites, sure, but does anyone really oppose singleton_class?

I’m for singleton_class. It’s what the official documentation has
used for a long time now. It’s also not like it will be the only
overloaded term in computing.

James Edward G. II


#6

On Jan 30, 2009, at 10:53 AM, James G. wrote:

I’m for singleton_class. It’s what the official documentation has
used for a long time now. It’s also not like it will be the only
overloaded term in computing.

eigenton_class? :slight_smile:

eigen_class or singleton_class doesn’t really matter to
me at this point but I do feel strongly that the object
returned by:

(class <<obj; self; end)

should be available via a simple method call rather
than only via that expression.

Gary W.


#7

Yukihiro M. wrote:

Hi,

In message “Re: Object#singleton_class in Ruby 1.9?”
on Fri, 30 Jan 2009 20:15:17 +0900, “David A. Black”
removed_email_address@domain.invalid writes:

|> Was Object#singleton_class (or #eigen_class or #meta_class) planned for
|> Ruby 1.9 or 2.0?
|
|Not that I remember hearing about. I’d certainly like to see it.

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

Since you make mention of “eigenclass”, that would seem to be your bent.
And I say, go for it! “eigenmethod”? Fantastic! Do it, do it, do it!

It may be Germanic, but I for one like the shorter method names anyway.
And certainly _Why has done enough for Ruby to deserve a little of his
charm to shine through the language… it will just give Ruby another
unique touch that her fans can revel in. Not to mention, no more
Singleton vs. singleton controversy.

Big smiles and all thumbs up,

T.


#8

Hi –

On Sat, 31 Jan 2009, Yukihiro M. wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

No, please don’t. It would mean having to re-edit books as well as
code… There’s been enough change recently :slight_smile:

David


David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2)

http://www.wishsight.com => Independent, social wishlist management!


#9

Thomas S. wrote:

Yukihiro M. wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

Since you make mention of “eigenclass”, that would seem to be your bent.
And I say, go for it! “eigenmethod”? Fantastic! Do it, do it, do it!

In that case, could we make the names more readable by adding an
underscore after “eigen”? I find it more difficult to parse the names
otherwise.

Object#eigen_class
Object#eigen_methods
Object#define_eigen_method

Not to mention, no more Singleton vs. singleton controversy.

This is indeed a good benefit.

Thanks for your consideration.


#10

David A. Black wrote:

Hi –

On Sat, 31 Jan 2009, Yukihiro M. wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

No, please don’t. It would mean having to re-edit books as well as
code… There’s been enough change recently :slight_smile:

David! How else are you supposed to sell 2nd and 3rd editions! :wink:

T.


#11

Yukihiro M. wrote:

Hi,

In message “Re: Object#singleton_class in Ruby 1.9?”
on Fri, 30 Jan 2009 20:15:17 +0900, “David A. Black”
removed_email_address@domain.invalid writes:

|> Was Object#singleton_class (or #eigen_class or #meta_class) planned for
|> Ruby 1.9 or 2.0?
|
|Not that I remember hearing about. I’d certainly like to see it.

We still don’t have consensus on the name. eigenclass?

Sorry, I only mentioned the other names because they were all proposed
when we first discussed this (back in 2006, I think). Ruby was the
first language where I learned the concept of “singleton class” (not the
design pattern) so I think it makes sense to keep that name.

In that case, should we rename singleton_method to eigenmethod?

Is this not a larger (disruptive) change than simply adding a new
Object#singleton_class method?

Thanks for your consideration.


#12

Suraj K. wrote:

Thomas S. wrote:

Yukihiro M. wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

Since you make mention of “eigenclass”, that would seem to be your bent.
And I say, go for it! “eigenmethod”? Fantastic! Do it, do it, do it!

In that case, could we make the names more readable by adding an
underscore after “eigen”? I find it more difficult to parse the names
otherwise.

Object#eigen_class
Object#eigen_methods
Object#define_eigen_method

Interesting, I find the other more readable, ‘class’ is like a suffix to
me, along the lines of ‘name’ in methods like #basename and #dirname.

Just personal preference of course. I’m don’t think there is any true
rational for one over the other.

T.


#13

Thomas S. wrote:

Suraj K. wrote:

In that case, could we make the names more readable by adding an
underscore after “eigen”? I find it more difficult to parse the names
otherwise.

Object#eigen_class
Object#eigen_methods
Object#define_eigen_method

Interesting, I find the other more readable, ‘class’ is like a suffix to
me, along the lines of ‘name’ in methods like #basename and #dirname.

The problem I have with words like “basename” is that, to me, they are
not actually words. For example, I pronounce “basename” as two separate
words “base, name” (with a brief pause in between) not as a continuous
word “basen-a-me” (without any pause in between).

The same applies to “dirname”, which I pronounce as “dir, name”. In
contrast, “singleton” is actually pronounced continuously as
“sin-gel-ton”, not as “single, ton”, so I have no need to insert
underscores in that word.

In short, how a word is pronounced tells me when to insert underscores.

Just personal preference of course. I’m don’t think there is any true
rational for one over the other.

I beg to differ and I think there is a rationale (see above).

Thanks for your consideration.


#14

On Fri, Jan 30, 2009 at 4:47 PM, Gregory B.
removed_email_address@domain.invalid wrote:

I wonder if this controversy has died down. There are people with
their favorites, sure, but does anyone really oppose singleton_class?

singleton_class is definitely the best (specially when we consider
that word ‘signleton’ already appeared in ruby). What I don’t like in
“eigenclass” is that it’s not english word (AFAIR it’s from germany
‘egein’ word).


Pozdrawiam

Rados³aw Bu³at
http://radarek.jogger.pl - mój blog


#15

Thomas S. wrote:

Suraj K. wrote:

Just personal preference of course. I’m don’t think there is any true
rationale for one over the other.

I beg to differ and I think there is a rationale (see above).

Never_the_less this is English, a close relative of German, and in these
languages conjoined words are common_place.

Good point and excellent illustration! Until seeing your example, I
never realized how well underscores flow with text, in comparison to
hyphens:

nevertheless vs. never-the-less vs. never_the_less vs.
neverTheLess
commonplace vs. common-place vs. common_place vs.
commonPlace

Of all the typographic conventions listed in the above example, I
heavily prefer snake_case, which is thankfully prevalent in Ruby. This
is one aspect of Ruby that I found very attractive, compared to, say,
Python, where the firstconventionintheaboveexample is prevalent. (A
personal preference, I agree.)

Generally speaking, it’s surprising that a better typographic convention
would arise from computer science rather than from literature. Perhaps
we may someday find that, in the increasingly digital future, people
would begin using under_scores as an alternative to the traditional
process of compound words being initially hyphenated (e.g. under-score)
and later not hyphenated (e.g. underscore).

Cheers.


#16

Suraj K. wrote:

Just personal preference of course. I’m don’t think there is any true
rationale for one over the other.

I beg to differ and I think there is a rationale (see above).

Never_the_less this is English, a close relative of German, and it these
languages conjoined words are common_place.

T.


#17

On Fri, Jan 30, 2009 at 5:46 PM, Gary W. removed_email_address@domain.invalid wrote:

eigen_class or singleton_class doesn’t really matter to
me at this point but I do feel strongly that the object
returned by:

   (class <<obj; self; end)

should be available via a simple method call rather
than only via that expression.

I completely agree with this point of view. I don’t mind which name
gets chosen, but please, choose one :-).

Jesus.


#18

On Sat, Jan 31, 2009 at 6:06 AM, Thomas S. removed_email_address@domain.invalid
wrote:

Jesús Gabriel y Galán wrote:

I thought you were making an exclamation, until I realized that was
actually your name. :slight_smile:

Hope that doesn’t offend --with a name like mine I know how it can be.
It just gave me a good laugh, so I thought I’d share it.

No problem. In Spain my name is used as an exclamation when someone
sneezes, so I’m pretty much used to these kind of things. In any case,
I also find it funny sometimes…

Jesus !

PS: I might start changing the dot for an exclamation mark in my
signature :slight_smile:


#19

Jesús Gabriel y Galán wrote:

On Fri, Jan 30, 2009 at 5:46 PM, Gary W. removed_email_address@domain.invalid wrote:

eigen_class or singleton_class doesn’t really matter to
me at this point but I do feel strongly that the object
returned by:

   (class <<obj; self; end)

should be available via a simple method call rather
than only via that expression.

I completely agree with this point of view. I don’t mind which name
gets chosen, but please, choose one :-).

Jesus.

I thought you were making an exclamation, until I realized that was
actually your name. :slight_smile:

Hope that doesn’t offend --with a name like mine I know how it can be.
It just gave me a good laugh, so I thought I’d share it.

T.


#20

On Fri, Jan 30, 2009 at 3:28 PM, Yukihiro M. removed_email_address@domain.invalid
wrote:

We still don’t have consensus on the name. eigenclass?
In that case, should we rename singleton_method to eigenmethod?

                                                   matz.

Personally, I prefer singleton_class. But I would rather it had an
official name than my preference held anything up.

I suspect there is a strong consensus that it should be named,
whatever the name. I doubt we’ll ever get consensus on ~what~ that
name should be. :slight_smile:

Regards,
Sean