From: "Mark J.Reed" Date: 2005-12-16T07:32:40+09:00 Subject: Re: Assigning a block to a variable in Ruby ajmayo@my-deja.com writes: >Oddly, there is an inconsistency here >q = String("abc") >q = String.new("abc") >are both legal but >q = string("abc") >is not, which you would extrapolate by extension from the Proc/proc >analogy. (because >a=Proc {....} >is not legal. That's because there's no automatic correlation between the class Proc and the method proc. Lowercase proc is just a static method of the Kernel module that returns a Proc: it's there as a convenience, because "proc" is less typing than "Proc.new". There's no corresponding "string" method because you don't need it. If the only way to get a String were to type String.new, there would undoubtedly be a Kernel.string as well, but since you can just do this: q = "abc" it's not required. You may not like Perl, but one thing Ruby has taken from it is the idea that you can overdo orthogonality.