The psychological aspect of 'purity' in this concept is as interesting as anything.
I think that devs are naturally prone to be obsessive compulsive about such things.
We can see 'defeating the borrow checker' as a 1st order objective.
I think devs fee that 'defeating the borrow checker' gives us much more satisfactiong than 'fulfilling the customers needs'.
There's something a big 'chinse finger trap' about FP that consumes our attention on an impusleve level that is not necessarily consistent with what it actually means to be a good engineer.
This, along with our will to abstract and to want to use 'shiny new things' etc..
On the other hand, there are those who are too stubborn to use anything but a dull knife and a broken hammer. There are situations where you can, e.g., make an error state impossible by defining a couple of types, or using one or two lines of generics. But then, what should have been a simple change becomes an ordeal because the other person lacks the background on all of these ideas.
I think all CS curricula should have some sort of class that explores languages like Haskell and Rust, the problems they attempt to solve and how they go about solving them, if only for the intellectual experience. What language you end up using, and what ideas you end up applying, is then up to you on a case-by-case basis.
I think that devs are naturally prone to be obsessive compulsive about such things.
We can see 'defeating the borrow checker' as a 1st order objective.
I think devs fee that 'defeating the borrow checker' gives us much more satisfactiong than 'fulfilling the customers needs'.
There's something a big 'chinse finger trap' about FP that consumes our attention on an impusleve level that is not necessarily consistent with what it actually means to be a good engineer.
This, along with our will to abstract and to want to use 'shiny new things' etc..