Earlier quoted context omitted.
Could someone explain why refactoring is so much easier in functional languages?
Type systems of functional languages are generally capable of representing more. You can have the type system validate application state at compile time for you, for example. If it compiled before and worked and your refactored version also compiles, chances are you didn't break anything.
And I would say that if somebody never worked with Haskell (or some other language with a strong type system like Idris) they can bit fantom what is possible to encode in the type system.