I have another question, speaking of optimizing too soon. My data structures will be things like rows of musical notes, implementable easily as lists of lists. But I will often need to do things like replace one element in a list. Should I use Array's? As I see it, lists get me certain simplicity, and many operations using the natural syntax will be concise. But then I'll have to do searches or random access and replacement.
What criteria does one use to make decisions like this? Do the easiest one first and optimize later? I'm not even sure which is easiest as I don't think there is a list element replacement function in the libraries.