Objects in Functional Languages
This is describing issues and tradeoffs of OOP relative to FP and haskell. It conveniently side steps the fundamental issue with OOP as used in Java or C++ or C#. I agree with most of what the author says except that his OOP version is basically incredibly hard to read and not intuitive. However that&#x27;s just my opinion.<p>The real big problem with OOP in context of the popular definition is the promotion of using logical operations that are not combinators. This makes OOP less modular.<p><pre><code>  class X:

     int b
     int c
     int d
     int x[100000] = {1,2,3,4,5,6,.......}

     function addOne(){
         return b + c + 1
     }

</code></pre>
The tradeoff with OOP is convenience. You have b and all the context of X implicitly accessible within the function but addOne cannot ever be used outside the context of X.<p>To reuse addOne means to recreate the entire context of X. I want a banana but in order to get the banana I must recreate the gorilla holding the banana and the entire jungle the banana is sitting in.<p>That&#x27;s what most people complain about even when they don&#x27;t realize it. In terms of the authors definition of OOP I don&#x27;t think there&#x27;s much controversy for that stuff.