| > I disagree. Low quality articles like this are part of the reason why many undergrads are full of strongly held opinions about things they don't know much about. I doesn't happen with undergrads only (but that doesn't make the whole profession guilty of it all the time). > They think you can dismiss a huge paradigm with a glib one-liner: "functions are not objects". I don't think the article dismisses any paradigm whatsoever. It dismisses the entrenchment in one paradigm at the expense of any other. That's the main point. The explanation given is perhaps a little bit careless, I can concede it. > Think about it a little bit and you'll see why they are actually very related. Relation does not imply causation, which I perceived in your wording, but I might have been mistaken. Was I? > His statement about Java is meant to imply that proper higher order functions and OOP are in opposition in some way I don't think he meant that, but rather that the way Java never included functions as "primitive types" was a mistake because of that need of OO purity. The Runnable interface (or any interface containing a single method) is an example of that problem (there are other reasons which may support the existence of that interface though). > I am saying that proper higher order functions alone are enough for a very pure form of OOP, so there is clearly no opposition. That's debatable. I totally agree with you on the idea that FP let you implement OO. Likewise, OO let you implement closures easily (there's a duality there obviously, as in algebra vs coalgebra). However, I think that OOP (or FP) as a full fledged paradigm included in any language - and not just a library built on top of closures (or closures on top of objects) - makes a lot of sense: it let the language incorporate syntactic sugar for all the specific constructs related to OO, and it also enable the compiler to perform better code analysis (though I suspect that it should be possible with a library based implementation, but that would imply either the compiler to know about it, or it having a very flexible - plugin like - mechanism to include enhancements as libraries as well). I don't think that the latest evolution in Java to include FP is a coincidence. Many languages have already been mixing these paradigms with good success. > I'm going to ignore the digs at me [...] Good. Let's get that out of the way. I'm glad we're having a saner discussion. > If he can't make a simple argument correctly, how am I supposed to have faith that his research isn't similarly full of errors? I understand your point better now. Initially, I was very afraid you'd be having the very same issue. |