Thanks for the thoughts, PeterBartholomew1. As you rightly note, MS has always faced a challenge designing for users at all points of the competency spectrum (while also often maintaining backward compatibility to the mid-1990s).
I do find it slightly confusing that the list is vertical or that 5,6;7,8 is not supported as a 2D array
That's not showing for you? It looks great on my end - `={{5,6;7,8}}` converts to a 2x2 array.
I wonder if we could have the best of both worlds thanks to the FLATTEN function. Arrays could be first-class objects (containers), unless the caller first passes the array through FLATTEN(). That would expose the inner elements of the array -- i.e., explicit expansion.
I'd rather force the user to use FLATTEN than to have inconsistent, mysterious behaviors.
I explored FLATTEN() a bit. It's pretty good -- especially thanks to the `levels` argument -- but it still has quirks because of vertical and horizontal data. I'll use the myHList and myVList examples from my earlier post.
={"txt", 123, {5,6,7}, {9;10}, 123}
={"txt"; 123; {5,6,7}; {9;10}; 123}
One might think that FLATTEN would work the same on both of these. E.g., if I used COUNTA, I would expect 8 elements. Now, I understand how mixing vertical and horizontal list/arrays can result in >8 elements because of padding #N/A values; not ideal, but I get it. BUT, logical as it may be "under-the-hood," it's surprising that these two FLATTEN functions don't return the same number of items.
=COUNTA(FLATTEN(myHList)) // returns 14
=COUNTA(FLATTEN(myVList)) // returns 18
To me, flatten means "unpack inner iterables into the main iterable's level," but that's not how it's being implemented here.