Hi,

2010/12/3 Shugo Maeda <shugo / ruby-lang.org>:
>> ... Oops!  This does not work as excepted.  I had believed that this
>> would work...  Why don't you allow this?
>
> Currently refine doesn't work without blocks, but do you mean that?

Ah sorry.

  module FooExt
    refine(Fixnum) do
      def /(other); quo(other); end
    end
  end
  module BarExt
    include FooExt # or using FooExt
  end
  using BarExt
  p 1 / 2 #=> actual: 0, expected: (1/2)


> I think it's hard to add new keywords by a gem.  Have you abandoned
> keywords?  I prefer to the keyword refine to the method refine without
> blocks suggested by you.

I first said in [ruby-core:33375]:

> However, we should discuss this topic (new keyword) towards
> 2.0.  Module's methods are not bad, as a part of reflection
> features (such as Module#define_method for `def' keyword).

Needless to say, we must not add any new keywords to 1.9.x, especially
normal simple word like "refine."  I'm ok to include this feature in
1.9.x, and now I believe that gem is a good idea as the first step.

However, I received many negative comments to this approach (gem),
from nars*, kosak*, ko*, nakad*, shyouhe*.  They seem to think that
it is better to import your patch "as is".


> Isn't it enough to introduce refinements as an experimental feature,
> at least in trunk?

I don't like to include a feature called "experimental", not because
it is not complete yet, but because it becomes "de facto standard."
It would be good if there are not only "document" but also "mechanism"
to inform users that the feature is experimental, such as warning or
a new method like "RubyVM.enable_experimental_features".

Note that this is just my opinion, and that I seem to be in the
minority ;-)
I hope that 1.9.x would be stable, but many other committers seem to
hope to include new feature in 1.9.x aggressively.

-- 
Yusuke Endoh <mame / tsg.ne.jp>