See Allowed Variable names in the manual: identifiers cannot start with a number (including numeric subscripts).
Every programming language has some restrictions on the characters allowed in identifiers, and Julia is more permissive than most. (Python doesn’t allow numeric subscripts at all, e.g. x₃ is not a valid Python 3 identifier. Similarly for most other languages, thanks to a fairly restrictive recommendation from the Unicode consortium.)
See this issue for discussion on allowing identifiers to start with numeric subscripts/superscripts.
I do not disagree at all, I had hoped there was a smart way to avoid the “.” as well, that I was not aware of yet
I suppose I just like when it looks more as a₁ than a[1].
So this is one of the points I liked about Julia, thinking that I could write exactly how I would have wanted, but unfortunately not in this case. I guess some restrictions have to be in place.
a₁ is already a valid variable name, which isn’t going to change—it’s useful and changing it would be a breaking change. So that will never be possible as a syntax for a[1].
You could always manually assign a₁ to a.₁ (similarly for the other entries), or create a macro to automate it. E.g., @fancy_macro a = Vec(1, 1, 1) # Also defines a₁, etc.