Homogenous arrays are partly to make implementations easier, and because if you really need that flexibility, you can always use an array of inline tables, which has the benefit of giving each sub-element a name, hopefully increasing the obviousness.
I'm not sure I understand your complaint, though, can you give me another example of how it's biting you in real life?
> you can always use an array of inline tables, which has the benefit of giving each sub-element a name, hopefully increasing the obviousness
Except the name would be duplicated with the content I'm storing.
As for an example, its effectively Cargo. My use case is very similar (dependency reporting) but my content is slightly different (as I said, the value would effectively duplicate the key)
Homogeneous arrays can come in the following forms
- Shallow, literal type (a list of lists, regardless of the nested lists contain)
- Full, literal type (a list of dicts of strings)
- Logical type
There are many times where a list is the best type for my data but I want to take advantage of logical types for easier configuration by my users.
Below is an example of what I mean by "homogeneous logical types":
`Cargo.toml` has you specify dependencies using a dict
but allows a short-cut syntax where a string value is assumed to be the version value in the above dict. Generally this is done in Rust using Enums