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