5 ms·
I use Clojure a lot, and did more Python in the past. Whenever I come back to Python, I am frustrated by being unable to remember what's a plain old function an
by jcromartie 12y ago
I use Clojure a lot, and did more Python in the past. Whenever I come back to Python, I am frustrated by being unable to remember what's a plain old function and what's a method, and the differences defining functions vs classes and methods etc..
In Clojure I know it's always (except for interop) just functions on values. Some functions dispatch to an implementation based on the type of the value, as is the case with multimethods and protocols, but it's still always just function calls from my point of view while writing the code.
- scardine 12y agoObjects in Python little more than glorified namespaces. I always think of methods as a function that gets the namespace where it was declared as the first argument. Yes, there is the inheritance thing, but in Python it is just a mechanism to organize code.
- mimighost 12y agoIn general, Python method is just combination of function object and pointer to "self" namespace.
- agumonkey 12y agoI'd like to know if it's done differently in other languages. In my view, methods are curried function over self with a '.' syntactic shortcut.
- collyw 12y agoThat's pretty much how I view them as well.
- agumonkey 12y agoGreat then.
- kazagistar 12y agoLua does not do the currying bit, but it does a lot less OOP and a lot more "dictionaries with stuff that can do something like prototype OOP if you squint hard enough". Java and whatnot just don't let you really use methods as first class citizens, so it doesn't matter.
- agumonkey 12y agoIIRC under the hood Java will 'evaluate' the methods body as a sophisticated function with 'this' in its environment.