So you want to say that common lisp is pure object oriented like ruby ?. "Pascal J. Bourguignon" <pjb / informatimago.com> wrote in message news:7c7i54eaoi.fsf / pbourguignon.anevia.com... > "Haris Bogdanovic" <fbogdanovic / xnet.hr> writes: >> "Pascal J. Bourguignon" <pjb / informatimago.com> wrote in message >> news:87hc48bsgp.fsf / informatimago.com... >>> "Haris Bogdanovic" <fbogdanovic / xnet.hr> writes: >>> >>>> In Ruby everything is an object. That's my favourite Ruby's feature. >>>> And >>>> you >>>> showed that by just making one module you can have Lisp like functional >>>> programming. So I'll stick with Ruby. >>> >>> In Lisp too, everything is an object. But there are several kinds of >>> objects, and you can create your own kinds too (you can write new >>> meta-classes in CLOS). >> >> I meant, every expression is an object. Not sure that's the case with >> clisp. > > > Expressions, in ruby are nothing. Expression in lisp are objects. > > The result of evaluating an expresssion The result of evaluating an > expression > in ruby is an object. in lisp is an object. > > Since expression in ruby are nothing Since expressions in lisp are > objects > we stop here. some expressions may return > objects > that are other expressions. > > Therefore you can write in lisp > program that write programs > (little Santa's helpers), more > easily than you can in ruby. > > > C/USER[127]> (let ((expression '(+ 1 2))) > (values (class-of expression) > (eval expression) > (class-of (eval expression)))) > #1=#<BUILT-IN-CLASS CONS> ; > 3 ; > #1=#<BUILT-IN-CLASS INTEGER> > C/USER[128]> (let ((expression '(list '+ 1 2))) > (values (class-of expression) > (eval expression) > (class-of (eval expression)))) > #1=#<BUILT-IN-CLASS CONS> ; > (+ 1 2) ; > #1=#<BUILT-IN-CLASS CONS> > C/USER[129]> > > > But of course, you can get it only when you become lazy and want to > automate not only a bank teller's job, but yours also. > > > > (Of course, like in any programming language, you can in Ruby put > expressions into strings, and have the interpreter read again these > strings, and you can even use libraries (because it is hard enough > most ruby programmers couldn't do it themselves) to parse ruby text > into ruby objects (Array, Symbol, and other ruby Object), and back > from these R-expr into a string. Oops, you don't get an expression > yet. You have again to feed back the interpreter with this string, to > let it do again the parsing, build the expression in some internal > opaque and inaccessible object (not a ruby object, IIRC ruby is > written in C, that would mean that ruby expressions are actually C > structures, not ruby objects)). > > -- > __Pascal Bourguignon__