On 12/2/2010 7:55 AM, Shugo Maeda wrote:
>
> Could you tell me why
>
>    refine Foo
>      def bar; end
>    end
>
> is good but
>
>    refine Foo do
>      def bar; end
>    end
>
> is not so good?

The "refine do ... end" block implies a method call which therefore 
becomes easily overridable at run time. This means the compiler cannot 
statically compute refinements unless it just assumed "refine" was never 
overridden. If refinements are truly meant to be lexically scoped, this 
should be reflected in the compiler's handling of them. Charles Nutter's 
post illustrates why this might matter.

- Loren