| Sure: 1) immutability has performance problems: source: literally every measurement of immutable vs not data structures ever performed. Source 2: logic - copying data is slower than not copying it Source 3: cache lines: modern CPUs rely pretty heavily on cache lines and branch prediction to improve performance. Immutability measurably harms both. 2) immutability requires more code and loc is the best predictor of defects Clarification: runtime immutability requires more code Source: it takes more lines of code to return deep copies of objects than to not do that. Source: https://www.researchgate.net/publication/316922118_An_Invest... Package densities are the best predictors of defects 3) Haskell projects have as many bugs as any other language Source: the best evidence we have here is “the large scale study of programming languages on GitHub”, but I suggest that you look deeper here, as the authors qualifications of defects is somewhat questionable (a project that never fixes defects would have low defect rates in this study, it additionally doesn’t properly compare projects sizes and other things). Anyways, in responses that do have better controls in place (and hilariously even in this paper itself, where we see Haskell programs tend of see higher defects as projects go on while c projects tend to have fewer), we see that Haskell does absolutely no better than anything else for bugs and defects. |
"Table 7: Functional languages have a smaller relationship to defects than other language classes where as procedural languages are either greater than average or similar to the average."
"The data indicates functional languages are better than procedural languages; it suggests that strong typing is better than weak typing; that static typing is better than dynamic; and that managed memory usage is better than un-managed."
You got owned by your own source.
As for your un-sourced claim that "copying data is slower than not copying it", I'd suggest learning how immutable-first languages practice data sharing between objects to minimize the amount of copying needed.