4 ms·
The article is satire, but I have some observations of and questions about FP. It seems like every FP programming environment develops objects of some kind. Rea
by stcredzero 7y ago
The article is satire, but I have some observations of and questions about FP. It seems like every FP programming environment develops objects of some kind. React/JSX has classes. Clojure has a few ways to use Java classes. Monads seem to be wrappers at some level. Then, you have environments which are explicitly "hybrids" between OO and FP, like Scala and MOP in Common Lisp.
The whole world seems to be converging on the usefulness of immutability, and this process started decades back. Also going decades back, at least as far as the 90's, Smalltalk folks recognized that a lot of the goodness in the class library and environment came from the majority of class library functions being pure, or the encapsulation allowing programmers think about them as if they were pure.
Would it be going too far to observe that programming is generally converging on pragmatic, mixed environments where the value of immutability and referential transparency is emphasized, but where encapsulation of state is also used? This is not absolutely true 100% across the board, but it seems to be one of the larger scale trends.
- mrkeen 7y agoI have used Scala quite a bit, and I do feel it does a few things better than Java. That said, I really dislike the 'best-of-both-worlds' argument for mixing OO and FP. Immutability is fantastic. If you are sitting in OO land, and someone gives you a library for immutable collections - great! But if you're already practicing immutability, and someone starts modifying your stuff, what is to be gained? It's the same story with null. I finally got rid of that - why would I want to become 'pragmatic' and get null back?
- stcredzero 7y agoThat 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.
- mrkeen 7y agoI 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.
- stcredzero 7y agoI have not come across objects in FP Are there things which effectively encapsulate a value? https://www.infoq.com/presentations/functional-pros-cons/ https://www.infoq.com/presentations/functional-pros-cons/
- pepper_sauce 7y agoThe 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. http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...