Re:Why functional programming matters
by mpfundstein on Tuesday April 18, 2017 @04:04PM
(#14142372)
I think C++'s const is one of the strongest consts I know of. Java/C#'s const on the other hand...
It's actually too strong and the designers of the language later had to introduce `const_cast` in order to relax it in certain circumstances.
In practice, Java's weaker `final` (immutable references) appears to be a reasonable middle ground.
Theoretically you can do both. Practically, few languages give you the tools you'd want to ensure functional purity.
C++ is a multi-paradigm language, for instance. But it doesn't have any concept of immutable data. The 'const' keyword exists but it only does a very shallow check for immutability (i.e., the pointer won't change but its data might). And even with a 'const', there are still huge backdoors (the 'mutable' keyword).
Point being, it's possible, but you'd be relying on convention in your design and care in your implementation to make it work.