Please help me with t1 transformation through the following path:
t1:enlist `a`b!1 2;
t2:exec val from ([]val:t1);
-3!t1 // +`a`b!(,1;,2)
-3!t2 // ,`a`b!1 2
t1~t2[;] // 1b
I expect that the 2nd line (exec) returns the same object as t1, but it is not. For some reason only [;] gets t1 from t2.
So what (and why) happens on lines 2 and 5?
UPD
Why the enlist is so fruitful? It makes enlist for each element, and also flips the entire object
-3!enlist `a`b!1 2 // +`a`b!(,1;,2)
-3!enlist each `a`b!1 2 // `a`b!(,1;,2)
-3!flip enlist each `a`b!1 2 // +`a`b!(,1;,2)
I think what's happening here is that the special promotion of lists of (conforming) dictionaries to a table is essentially "undone" when it becomes the column of a table. It goes back to being lists of dictionaries as if they were non-conforming, though misleadingly the terminal still displays it as if it was a table. To see this, consider this example:
Your case is the same thing but for a single dictionary rather than two, but I think two dictionaries makes it easier to see.