Method calls can usually omit the receiver and the parentheses for the arguments:
def foo; \"foo\" end foo # => \"foo\"
In the case abov
There's no big reason behind the difference. I just wanted foo to be behave like foo(), if there's no local variable foo in the scope. I thought it was useful for creating DSL etc. But I saw no reason to make Foo to behave like Foo().