Many array languages do have this issue. To be precise, the issue is that the simple straightforward approach tends to compute a lot more than necessary.
It's of course possible to do it in a different way to deal with that issues but those solutions can be a bit longer and less pretty.
The APL dialect I'm working on (Kap) solves this problem in many cases by delaying the computation until the result is needed, which means that you can write the code using the straightforward approach but still avoid computing results that will be thrown away.