Why would your complex data structures be mutable? Wouldn't immutability pay off especially in complex cases?
There might be a lot to be said for rust-style immutable-by-default.
Ie often you have to get the complex data structures right (lots of logic, not much computation) to set up your computations on the simple ones (eg lots of number crunching on your arrays).
(Haskell also allows mutability that is visible to the semantics of the program, that's where the famous monads come in.)