<div dir="ltr"><div><font face="monospace, monospace">Hello - </font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In order to do some testing and studying, I am playing with an extremely simplified example, using the Ur/Web Sql demo as a starting point:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="http://www.impredicative.com/ur/demo/sql.html">http://www.impredicative.com/ur/demo/sql.html</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">That demo had one table called `t`:</font></div><div><span class="" style="color:rgb(160,32,240)"><font face="monospace, monospace"><br></font></span></div><div><div><font face="monospace, monospace">table t : { A : int, B : float, C : string, D : bool }</font></div><div><font face="monospace, monospace">  PRIMARY KEY A</font></div></div><div><br></div><div><font face="monospace, monospace">My example extends this very slightly, to use a "parent" table `color` and "child" table `thing`:</font></div><div><font face="monospace, monospace"><br></font></div><div><div><font face="monospace, monospace">table color : {</font></div><div><font face="monospace, monospace">  Id : int, </font></div><div><font face="monospace, monospace">  Nam : string</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">  PRIMARY KEY Id</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">table thing : {</font></div><div><font face="monospace, monospace">  Id : int,</font></div><div><font face="monospace, monospace">  Nam : string,</font></div><div><font face="monospace, monospace">  Color : int</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">  PRIMARY KEY Id,</font></div><div><font face="monospace, monospace">  CONSTRAINT Color FOREIGN KEY Color REFERENCES color(Id)<br></font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">To keep things ultra-simple, there is no GUI for "parent" table `color` - it has to be populated using psql.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">===</font></div><div><br></div><div><font face="monospace, monospace">The new code, which is very short, is in this github repo:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="https://github.com/StefanScott/urweb-color-thing-THING">https://github.com/StefanScott/urweb-color-thing-THING</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The above code DOES NOT compile, giving some unification failure error messages about tables `thing` and `t`. These compiler errors are shown in Issue 1 on the above github repo:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="https://github.com/StefanScott/urweb-color-thing-THING/issues/1">https://github.com/StefanScott/urweb-color-thing-THING/issues/1</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Mystery:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">There is no table `t` mentioned anywhere in the above github repo! </font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(There WAS a table `t` in the original Sql demo, but I had already renamed all occurrences of it to table `thing`.)</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Extra checking:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">I have done a search (for string "t" - whole words, non-case-sensitive) to confirm that there are no occurrences of a table `t` anywhere in the above github repo. Nevertheless, the compiler keeps referring to a mysterious table `t`, which does not match the table `thing`, so the code doesn't compile.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">I have also carefully checked the upper- and lower-case for all the table names, field names, and structure names, and they look fine. I have also checked additional things: (a) confirming that ReadError is only used on numeric fields; (b) confirming that neither table uses a sequence for the `Id` field.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Now, as a test, I renamed all occurrences of table `thing` to `t` in the above github repo, producing a new, separate github repo:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="https://github.com/StefanScott/urweb-color-thing-T">https://github.com/StefanScott/urweb-color-thing-T</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The code in this repo (identical to the code in the previous repo, except all occurrences of table `thing` have been renamed to table `t`) DOES compile and run fine!</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">So the above two github repos are identical - except one uses a table called `thing` and the other uses a table called `t`.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The code using table `thing` DOES NOT compile (and complains about unification errors involving a non-existent table `t`) - but the code using table `t` DOES compile and runs fine!</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Why is this?</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Note: I have also tried extending this, adding a struct for table `color`. When attempting to compile using two different structs for tables `color` and `thing`, there are twice as many compiler errors - always complaining about the same unification failures with some mysterious, non-existent table `t`.</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Thanks for any help solving this mystery!</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">###</font></div><div><font face="monospace, monospace"><br></font></div><div><br></div></div>