From: Robert Dober Date: 2006-06-18T06:51:47+09:00 Subject: Re: self-similarity or closure in ruby ------=_Part_27344_29103534.1150581103501 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On 6/17/06, Matthew Smillie wrote: > > On Jun 17, 2006, at 13:17, Robert Dober wrote: > > > On 6/17/06, uncutstone wu wrote: > >> > >> It seems > >> In lisp, everything is expression > >> In smalltalk, everything is object > >> In Ruby, > >> everything is an expression > >> everything is an object > >> > >> This kind of characteristic is called closure. > > > > > > I am afraid that is not correct (c.f. > > http://en.wikipedia.org/wiki/Closure_%28computer_science%29 if you are > > interested) > > Cheers > > Robert > > > > It is also a kind of self-similarity. > > Beware the Wikipedia, my son! Hey I just defended you in the other thread, daddy! The editors' bite, the facts which clash! > Beware the disambiguation page, and shun > the frumious Bandersnatch! > > (If I were more creative, I'd finish off the whole poem, but you get > the point) > > There's a more relevant meaning of 'closure' given here: > http://en.wikipedia.org/wiki/Closure_%28mathematics%29 I see what OP meant, thanks for the link, but http://en.wikipedia.org/wiki > > /Closure_%28computer_science%29 is not a bad description of what a closur= e > is in the context of ruby. > This is more the sense which I think the original post was meant, and > seems intuitively correct in that sense: in Ruby, any operation on an > object results in an object. This is not true in the general case > for OO languages (consider int vs. Integer in Java, or pointers in C++). The mathematical way to say ruby is consistent in concept, I agree. I'm not as sure that Ruby is closed with respect to expressions in an > interesting way. The not-so-interesting case that I can imagine is > that any valid expression in a language results in a (possibly > trivial or empty) valid expression in that language, which seems to > me like a necessary condition to have a useful programming language > in the first place. Maybe this definition of expression is too broad? > > matthew smillie. > > Well I still guess OP ment the consistentcy, in that brings me to the benefits. As everything is an object there are only methods, look e.g. at these code snippets in ruby first 2.3.to_i "12".to_i "12".to_i(16) 42.to_s and now in python str(12.5) int(1.3) int(42) int(42,16) Now we can also easily extend or redefine methods on the built in classes irb(main):006:0> class Fixnum irb(main):007:1> def +(x);0;end irb(main):008:1> end =3D> nil irb(main):009:0> 3+2 =3D> 0 I choose this stupid example to show the danger which comes with the power. I am sure others will come up with much more advantages. Cheers Robert --=20 Deux choses sont infinies : l'univers et la b=EAtise humaine ; en ce qui concerne l'univers, je n'en ai pas acquis la certitude absolue. - Albert Einstein ------=_Part_27344_29103534.1150581103501--