On 3/28/07, David Vallner <david / vallner.net> wrote: > Yamal Khaled Soueidan wrote: > > Hello everyone, > > > > I have been discussing the difference between methods and functions with a > > friend, but we couldn't agree on what method and function is? > > > > Potayto, potahto. > > Both are names for an abstraction over some bit of code that has Stuff > Going In and Stuff Going Out. For methods, commonly, what bit of code > gets executed depends on one of the things going in - some form of > polymorphic dispatch depending on an argument (this, in Ruby, being the > implicit self), and most commonly, on the type of this argument. > > Of course, in Ruby, the type of self is -really- a Class object holding > a hash of methods. So the polymorphic dispatch depends on what's > actually some special value in the type system. Doing away with the > "special" role of self.class, we might as well say that if you put > lambdas (which seem function -ish enough) in a hash and then call one > depending on some value (a key in this hash), you're making a method > call (HI MR. GRAHAM!). something like this? : http://pastie.caboo.se/50279 > > Going ad absurdum, if we accept that a "method" is anytime when > semantics of a message send / function call / etc. depends on the value > of an argument (or more (yay CLOS, the inexhaustible source of obscure > views on OO (and nested parens))), you could as well argue that OCaml > pattern matching is a form of polymorphic dispatch, making OCaml > functions methods. (Good luck trying to persuade those guys about that > without getting weird looks and getting asked "And this is important why?") > > My $0.02 say that the distinction made more sense in C++, and keeping > both lingos was implementation details leaking into language syntax > leaking into programmer mindset, or in another language where a > polymorphic dispatch was a more ostentatious affair (Smalltalkesque "we > do it everywhere!"), and where noone bothered to think just how common > and trivial what's happening under the hood (a table lookup of one sort > of another) is. > > David Vallner > End Rant > > > -- Chris Carter concentrationstudios.com brynmawrcs.com