As I recall, if you have constant-time random access array with mutation then you can emulate that behavior in a functional language using balanced trees, with O(log(n)) time.
This means any functional programming language can implement any imperative programming language with a factor of O(log(n)) overhead.