Eric Mahurin wrote:
 > On Wed, Apr 23, 2008 at 9:21 AM, David A. Black <dblack / rubypal.com
 > <mailto:dblack / rubypal.com>> wrote:
 >
 >     Hi --
 >
 >     I'd like to request the deprecation/removal of :: as a synonym 
for the
 >     method-calling dot. I think it's a good opportunity to take out
 >     something that Ruby doesn't need. We've already got the dot, which
 >     always means "send a message", and :: already means something else
 >     (constant resolution).
 >
 >
 > I'd actually prefer to go the other way and  add  more value to both
 > "::" and ".".
 >
 > a::b - gives an object named b in the scope of a
 > a.b - calls an object named b in the scope of a

Nice idea, but a::b::c doesn't make any sense, right? Or is it method
"c" of the Proc object method(:b)?

And how about this inconsistency:

   a.b  <=>  a.b()

   a::b <!=> a::b()

In this respect, I like the current behaviour much more, which is less
inconsistent.

And think about this usage scenario, which is where "::" really helps to
mask dynamic class generation:

   module A
     class X
       C = 1
     end

     def self.GenClass(*args)
       Class.new(X) # do something here
     end
   end

   A::X
   A::X::C
   A::GenClass(1, 2, 3)
   A::GenClass(1, 2, 3)::C

Basically you can treat a method that returns a new class like a class,
which is beautiful.

Regards,

   Michael