Python can trivially be ported to Haskell via let and where clauses, with recursion substituting for loops. Hell, with increasing maturity of inline-python: Python interpreter embedded into haskell. , you can directly call Python libs as needed.
Mutation can be handled either by using equational reasoning to render the entire algorithm immutable, using higher-order functions or accumulating parameter loops to encode mutation.
What you get in return is:
Equational reasoning allows refactoring of algorithms to more efficient and readable forms
Greater and more expressive type safety by default
At least a 2x improvement in performance in most cases.