An example: Wouldn't all the short-lived copies you're making to avoid modifying data be inefficient? Not with GHC's copying/arena-GC...
Fundamentally in functional programming we prefer trees over arrays, since that minimizes how much memory we're duplicating.
2/1!