User talk:Colby Russell/Draft:The case for object-functional programming
Another subtle benefit of concrete objects (i.e. using the language's built-in syntax and semantics for dealing with objects) over plain closures has to do with types. ("What? A focus on types in a dynamically typed system?" Yes.)
There are relevant complaints from C programmers like Linus and Joel Spolsky about having to track down, say, what an operator does or what a given method does, based only on what's written at the callsite. But C has function pointers, which sometimes get used like lambdas, and which presents opportunities in pathological cases for the exact same thing confusion.
Two takeaways:
1. It's the pathological use that's the problem and not the opportunity itself
2. By using built-in object syntax tastefully, the programmer can be nudged into "concretizing" the sorts of things that people look to find at written at the callsite to eliminate the confusion/tedium that people complain about when they speak out against "OO".