From: Charles Lowe Date: 2007-02-17T14:16:24+09:00 Subject: Unification of variables and methods The one thing that bothers me about ruby is the (as i see it?) separate namespaces for locals and functions. Variables take precedence, but you can override and get the functional form in 2 ways: def x; 1; end x = 2 x # => 2 x() # => 1 self.x # => 1 1. It seems somewhat messy, and prohibits using () as a message (eg, sending :call) x = proc { 1 } x() # NoMethodError... x[] # => 1 2a. It also leads to a more complex language to parse, and to those interesting issues like: def x; 1; end x # => 1 x = 2 if false x # => nil 2b. And other confusion as `*', '&' and '/' being mistaken at times, with certain whitespace dependencies: def foo1; end foo2 = '' foo1 / 1 # this / is division foo1 /1 # this / starts an (as-yet unterminated) regexp. foo2 / 1 # this / is division also foo2 /1 # this / is also division! yet actually IRB trips up, looks # for the rest of /, then gives a SyntaxError on compilation. a = [1, 2] foo1 * a # * means splat foo2 * b # * means multiply I don't understand why they both just can't get along? :) (ie at least in the same namespace, optionally with parsing not dependent on the guessed type). -- Posted via http://www.ruby-forum.com/.