Live data from Hacker News

"I decided not to introduce full refinement for Ruby 2.0."

bugs.ruby-lang.org

11–20 of 25 posts

Re: "I decided not to introduce full refinement for Ruby 2.0."

#12

I love Ruby with all my heart but that seems to be quite a mess. While a not-well-thought-through feature in some application can be forgiven (and maybe even removed), in language design it cetainly has no place. And while this should be a secondary consideration, I really feel for those poor JRuby and Rubinus guys. As if Ruby wasnt "dynamic" enough, the sheer complexity of implementing refinements must be awful! I t…

Agreed. Ruby is already difficult to debug on projects of any significant size, and frequeny docficut to wrap your head around where various behaviors are originating from. Ruby's dynamism is -- or was -- a strength, but it feels like the language maintainers might have taken it a bit too far.

Re: "I decided not to introduce full refinement for Ruby 2.0."

#15
Ok, tell me if I have this correct:

  module Foo
    def hello
      puts "Hello World"
    end
  end

  ...in a different file...

  foo = Foo.new.msg
Q: What does that print? A: There is no way to tell. It depends on what the 'using' line (not shown) is, and whether anything has refined 'Foo'.

Seems like bad action at a distance, to me. Or am I missing something? The example about the effects of refining 'each' is also pretty disconcerting.

Re: "I decided not to introduce full refinement for Ruby 2.0."

#16
post #15

Ok, tell me if I have this correct: module Foo def hello puts "Hello World" end end ...in a different file... foo = Foo.new.msg Q: What does that print? A: There is no way to tell. It depends on what the 'using' line (not shown) is, and whether anything has refined 'Foo'. Seems like bad action at a distance, to me. Or am I missing something? The example about the effects of refining 'each' is also pretty disconcertin…

Seems like a NoMethodError to me.

Re: "I decided not to introduce full refinement for Ruby 2.0."

#17
post #9
post #8

Earlier quoted context omitted.

...except the previous listing does basically the same thing, but doesn't have any comment about R1's refinements not working when you're using R2.

Ah, I misread the feature list (namely the text right above the examples, about Module#include). Matsumoto gives two of the same examples, the first in how he wants the feature to work (R2 having the refinements of R1 if it includes it) and the second in how it works at the moment (or doesn't work). If you try that code it breaks, he wants it to not break and return :bar.

Thank goodness I wasn't the only one confused by this. I stared at the code listing and stared at it, only to wonder what the difference was. :)

Re: "I decided not to introduce full refinement for Ruby 2.0."

#18
post #12

I love Ruby with all my heart but that seems to be quite a mess. While a not-well-thought-through feature in some application can be forgiven (and maybe even removed), in language design it cetainly has no place. And while this should be a secondary consideration, I really feel for those poor JRuby and Rubinus guys. As if Ruby wasnt "dynamic" enough, the sheer complexity of implementing refinements must be awful! I t…

Agreed. Ruby is already difficult to debug on projects of any significant size, and frequeny docficut to wrap your head around where various behaviors are originating from. Ruby's dynamism is -- or was -- a strength, but it feels like the language maintainers might have taken it a bit too far.

It's rather easy to figure out where something is originating in the REPL particularly if you use pry.

Re: "I decided not to introduce full refinement for Ruby 2.0."

#19
post #15

Ok, tell me if I have this correct: module Foo def hello puts "Hello World" end end ...in a different file... foo = Foo.new.msg Q: What does that print? A: There is no way to tell. It depends on what the 'using' line (not shown) is, and whether anything has refined 'Foo'. Seems like bad action at a distance, to me. Or am I missing something? The example about the effects of refining 'each' is also pretty disconcertin…

[deleted]

Re: "I decided not to introduce full refinement for Ruby 2.0."

#20
Steve, I agree with you that this is a lot of change for something in preview, but didn't Rails 3 have some last minute changes before its release as well, and 3.1 was a big jump also?

Matz, Shugo, and Charlie will figure it out soon enough, but it is interesting. What is more upsetting to me really is the version number. 2.0 implies some major changes, but 1.9 was more major. It should be 1.10, and then they should work on something more revolutionary for 2.

There is a lot of pressure on Matz also. They really need to spend more time on it.

Post reply on HN