gabriele renzi <surrender_it / remove.yahoo.it> wrote in message news:<g1cre09c8hj688bnq16g4ahf7n0mf4d146 / 4ax.com>...
> In this view you can consider lisp as having one object (the list) and
> some basic methods to work on that (car/cdr). If we had method call in
> ruby like:

Once again, if you remove the semantic difference between a "method"
and a "function", you render both useless.  A method is a message sent
to an object, which then reacts and exhibits some behavior.  A
function is something that operates on some (optional) argument -- the
functionality is in no way bound to the object.  One would say that
given:

   Ruby:
   class Obj
     def foo ; end
   end

   Haskell:
   foo :: Obj

In Ruby, Obj *knows* about, and is intimate with, foo, which in turn
knows about Obj[1].  In Haskell, foo() knows about Obj, but Obj knows
nothing about foo.

Pure functional languages violate your statement:

> if you consider that an Object is some state+some data+some methods

because (a) pure functional languages have no state, and (b) there are
no objects in the classical sense; just primatives, which have no
associated behaviors.  This is one of the beauties of functional
languages: you're always working with primatives.  Ultimately,
everything in an FP is a pair, a tuple, a string, or a number of some
sort.


[1] The exception to this are mixins, which are generally ignorant of
the objects on which they are operating.

--- SER