while I love F# too I think what hinders adoption is:
- training in FP: for an enterprise on the most crucial points is imho recruiting
- tooling: while the tooling is ok for F# (though not ReSharper grade by far!) it is still lacking
what I often see as refactoring is not that supported in F#/FP languages is the functional equivalent to spaghetti code, where function call after function call is piped without following SOLID principles/ Clean Code style.
I don't think you can apply the same principles to OO and FP but in terms of refactoring, my experience is that pure functional code is a joy to test and maintain. Small pure functions (again functions can only be pure functions, otherwise you're really talking about procedures), are by their nature easy to test, compose, cache, parallelise and pipeline. If that sounds bad to you, then fair enough.
- training in FP: for an enterprise on the most crucial points is imho recruiting
- tooling: while the tooling is ok for F# (though not ReSharper grade by far!) it is still lacking
what I often see as refactoring is not that supported in F#/FP languages is the functional equivalent to spaghetti code, where function call after function call is piped without following SOLID principles/ Clean Code style.