On 07/28/2015 02:50 AM, Stefan Scott Alexander wrote:
But wait! Let's do one more test:

(2) If we *replace* the 2nd statement with a copy of the 1st statement (and in the 2nd copy we change 'thingRows' to 'thingRows2' - and we also again remove references to 'colorOptions' elsewhere in my code), then the code looks like this:

  thingRows <-
    queryX1 (SELECT * FROM thing)
    (fn r => <xml> <tr>
               <td> {[r.TId]} </td>
               <td> {[r.TNam]} </td>
               <td> {[r.Color]} </td>
             </tr> </xml>);

  thingRows2 <-
    queryX1 (SELECT * FROM thing)
    (fn r => <xml> <tr>
               <td> {[r.TId]} </td>
               <td> {[r.TNam]} </td>
               <td> {[r.Color]} </td>
             </tr> </xml>);

AND NOW WE GET THE SAME COMPILE ERROR AS PREVIOUSLY (before we did any modifications):

"Some constructor unification variables are undetermined in declaration".

I recommend thinking more about the meanings of the error messages, instead of thinking of them as magic incantations. ;)

As I wrote in my previous message, the other code that you removed really was the problem, and it makes sense why it would be.

Your modification (2) introduces a new problem: variable [thingRows2] is defined but never used, and the usage context gave crucial information to determine its precise type. Without that information, its type contains at least one undetermined unification variable.

Why would the type be unclear from context above? Ur/Web XML types include information on which form variables are bound and used. The code above is not sufficient to tell which form variables may be in scope for the generated XHTML.
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to