That said, I really dislike the 'best-of-both-worlds' argument for mixing OO and FP.
I'm not making that argument. I'm making the observation that over time, upon collision with the enterprise or real world, all Functional Programming environments seem to develop OO features, and most Object Oriented environments either have or embrace FP features.
It's the same story with null. I finally got rid of that - why would I want to become 'pragmatic' and get null back?
I think it's possible to get rid of null. However, I don't think it's possible to get rid of Objects in FP. They always seem to return in some form, disguised by nifty and abstruse terminology and mechanisms. It's not some rosy "best of both worlds" situation. It's more or a realist, well, I guess we're stuck with things from here and there.
Despite the "almost a field" having its disfunctions, three decades of programming language history and the efforts of countless geniuses likely means something, and this pattern of OO environments gaining FP features, and FP environments gaining (perhaps disguised) Objects persists across that.
I have not come across objects in FP - aside from those languages which advertise themselves as hybrid.
clarification: the term 'object' comes up in reference to category theory, but it's meaning may as well be 'anything'. Completely different from the association of data and methods.
The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures.
Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.
On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened.
I'm not making that argument. I'm making the observation that over time, upon collision with the enterprise or real world, all Functional Programming environments seem to develop OO features, and most Object Oriented environments either have or embrace FP features.
It's the same story with null. I finally got rid of that - why would I want to become 'pragmatic' and get null back?
I think it's possible to get rid of null. However, I don't think it's possible to get rid of Objects in FP. They always seem to return in some form, disguised by nifty and abstruse terminology and mechanisms. It's not some rosy "best of both worlds" situation. It's more or a realist, well, I guess we're stuck with things from here and there.
Despite the "almost a field" having its disfunctions, three decades of programming language history and the efforts of countless geniuses likely means something, and this pattern of OO environments gaining FP features, and FP environments gaining (perhaps disguised) Objects persists across that.