Using the symbol table to simulate an array is definitely creative.eval a_${i}=\$l
I used to do this back in the 1980s when the Bourne shell was all actually written by Steve Bourne (and there few other good shells around).
But each one of those evals causes a fork(2) and exec(2), so there is something of an issue with execution speed...