4 ms·
> it isn’t really functional programming languages Except that the goalposts keep moving all the time. It used to be the case that having first-class functions
by 0815test 7y ago
> it isn’t really functional programming languages
Except that the goalposts keep moving all the time. It used to be the case that having first-class functions was enough to be considered FP, but even function objects in C++ or Java give you that. Then it was "no global mutability" - restrict mutation to a single well-defined "context" of execution (via things like the ST monad, in a functional language like Haskell) and make sure that anything that's shared more broadly is immutable. But Rust has now codified that rule-of-thumb as well, and with it the comprehensive use of such a "sharing or direct mutation, but not both" pattern. It will be interesting to see how this evolves in the future.
- lallysingh 7y agoSHH!! DON'T TELL THEM THE PLOT! We have to let them think that they're in control... That their languages are "just happening" to slowly evolve into shitty variants of Haskell.
- dan-robertson 7y agoI don’t really want to say what is and isn’t a functional programming language. However I think it’s pretty clear that c++ and java are not particularly functional and that the next version adding traditionally functional features does not convert one’s legacy codebase into an FP program. It’s still the non-FP program it was before. I don’t think this was ever really about first class functions (by which you really mean closures): C already had function pointers and a common pattern of function pointer plus a void * for some data which effectively gives you closures without the syntax. And java already had the ability to mint a class inside a function which closed over (final) variables which is basically the same as a lambda. Saying that functional programming means lambdas is like saying that FP is the same as having GC (or good static types, or dynamic types, or lots of parens, or ...). This isn’t true (again, see java, but when it was new) and there are examples of languages in each quadrant of the FP vs GC square. The fact that C++/Java are picking up features from functional programming languages is sort-of irrelevant. I think it makes more sense to say that they are picking up useful features from all sorts of programming languages My main point in this area is that despite the mood on HN, most programming done in industry is with the same big existing procedural/oop programs that have been around for ages and are likely not going to dramatically change or be rewritten just because FP has been coming back into fashion in the last 10 years. And the new programs written in industry will probably still be in the same languages to interoperate with the old programs (although perhaps written in a slightly more functional style depending on who writes the programs and which libraries they use). Having said that I’m less sure about JS. I get the impression that it’s tending to a more functional style as a solution to managing complicated state and user interfaces, that many programs are written with new functional style libraries like react, and that programs are less likely to be old and big and more likely to be frequently rewritten. But maybe this impression is wrong and most JS programs are just using jquery. Two actual changes are I think moving towards web based UIs instead of platform native ones, and moving to json instead of xml. But these have little to do with programming languages.