Ask HN: OOP in Functional Programming Language
I find that my ruby code more and more resembles functional programming:
Instance variables are always set in the constructor, and almost never mutated.
The thing I like about OOP is really just that the methods of an object don't have to take a bunch of parameters, but that it instead can rely on the instance variables. I guess in functional programming, this would be something like having a (constructor) function that returns a hash of methods that have been given what in OOP would be instance variables as their first parameters, and then only need non-instance variables through currying. My question is, is there a functional programming language that not only supports, but `encourages` this OOP style programming?
9 comments
[ 2.8 ms ] story [ 31.5 ms ] threadThis is not too different from how many real object-oriented systems are implemented.
There is a quite a bit of overlap between "using functional programming techniques to implement an object-oriented style" and "using object-oriented techniques to implement a functional programming style."
There's nothing more annoying in the lower teachings of programming that circulate than the "FUNCT10NS RULE, 0BJECTS DR001" sentiment you see so much of.
The tricky thing with this model is "how do you implement polymorphism?" The most sublime methods dispatch not just on this but also on the other methods but you do get extra complexity just as you would with multiple inheritance, or the C++/C# polymorphism models other than Java's "all-virtual" approach, etc.
You can also do function calls with optional arguments with defaults.