<div dir="ltr"><div><font face="monospace, monospace">Hello - <br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">As reported in my previous posts...</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="http://www.impredicative.com/pipermail/ur/2015-July/002064.html">http://www.impredicative.com/pipermail/ur/2015-July/002064.html</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="http://www.impredicative.com/pipermail/ur/2015-July/002067.html">http://www.impredicative.com/pipermail/ur/2015-July/002067.html</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">...I was previously getting errors involving "unification failure" and "incompatible types".</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Adam correctly surmised that these were probably due to my incorrect use of syntax for monadic IO:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="http://www.impredicative.com/pipermail/ur/2015-July/002065.html">http://www.impredicative.com/pipermail/ur/2015-July/002065.html</a><br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">I have now revised the code used in my previous post, and uploaded the revised code (still not quite working yet - no longer generating errors regarding monadic IO, but still generating some mismatched tag errors, etc.) to a new, separate github repo, here:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="https://github.com/StefanScott/urweb-crud2foreign-queryL1">https://github.com/StefanScott/urweb-crud2foreign-queryL1</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">The error messages are shown in Issue 1 on that github repo, here:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="https://github.com/StefanScott/urweb-crud2foreign-queryL1/issues/1">https://github.com/StefanScott/urweb-crud2foreign-queryL1/issues/1</a><br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In this revised version, I have changed the portions which formerly used 'Top.queryX1' (or 'Top.oneRowE1') and 'return' and ';':</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">  Widget = (fn [nm :: Name] =></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">  statusOptions <-</font></div><div><font face="monospace, monospace">    queryX1 (SELECT Id, Nam FROM status ORDER BY Nam)</font></div><div><font face="monospace, monospace">    (fn r => <xml><coption value={r.Id}>{r.Nam}</coption></xml>);</font></div><div><font face="monospace, monospace">    return;</font></div><div><font face="monospace, monospace">    <xml></font></div><div><font face="monospace, monospace">      <select{nm}></font></div><div><font face="monospace, monospace">        {statusOptions}</font></div><div><font face="monospace, monospace">      </select></font></div><div><font face="monospace, monospace">    </xml>)</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Now use 'let val ... in' and 'Top.queryL1' and 'List.MapX':</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">  Widget = (fn [nm :: Name] => </font></div><div><font face="monospace, monospace">    let</font></div><div><font face="monospace, monospace">      val statusOptionsTxn = </font></div><div><font face="monospace, monospace">        queryL1 (SELECT Id, Nam FROM status ORDER BY Nam) </font></div><div><font face="monospace, monospace">      val statusOptions = </font></div><div><font face="monospace, monospace">        List.MapX </font></div><div><font face="monospace, monospace">          (fn r => <xml><option>{r.Nam}</option></xml>)</font></div><div><font face="monospace, monospace">          statusOptionsTxn</font></div><div><font face="monospace, monospace">    in</font></div><div><font face="monospace, monospace">      <xml></font></div><div><font face="monospace, monospace">        <select{nm}></font></div><div><font face="monospace, monospace">          {statusOptions}</font></div><div><font face="monospace, monospace">        </select></font></div><div><font face="monospace, monospace">      </xml>)</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Questions:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(1) Am I heading in the right direction?</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">(2) I am no longer getting error messages about "unification failure" or "incompatible types" due to </font><span style="font-family:monospace,monospace">incorrect monadic IO</span><font face="monospace, monospace">. But I am still getting some other (less "serious"?) error messages now involving mismatched tags, eg:</font><span style="font-family:monospace,monospace"> </span></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">crud2foreign.ur:76:27: (to 76:32) Begin tag <xml> and end tag </option> don't match.</font></div><div><font face="monospace, monospace">crud2foreign.ur:76:56: (to 77:30) syntax error: deleting  XML_END RPAREN SYMBOL</font></div><div><font face="monospace, monospace">crud2foreign.ur:78:8: (to 78:10) syntax error: replacing  IN with  LBRACE</font></div><div><font face="monospace, monospace">crud2foreign.ur:83:16: (to 83:18) syntax error: deleting  RPAREN COMMA</font></div><div><font face="monospace, monospace">crud2foreign.ur:85:24: (to 99:13) This is an expression but not a pattern.</font></div><div><font face="monospace, monospace">crud2foreign.ur:99:12: (to 99:13) syntax error: replacing  RPAREN with  UNDER</font></div><div><font face="monospace, monospace">crud2foreign.ur:105:16: (to 105:58) This is an expression but not a pattern.</font></div><div><font face="monospace, monospace">crud2foreign.ur:105:27: (to 105:46) This is an expression but not a pattern.</font></div><div><font face="monospace, monospace">crud2foreign.ur:105:17: (to 105:57) This is an expression but not a pattern.</font></div><div><font face="monospace, monospace">crud2foreign.ur:105:36: (to 105:45) This is an expression but not a pattern.</font></div><div><font face="monospace, monospace">crud2foreign.ur:109:16: (to 109:16) syntax error: inserting  DARROW</font></div><div><font face="monospace, monospace">crud2foreign.ur:115:0: (to 115:0) syntax error found at EOF</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Note: I recall from an old Ur/Web FAQ that such error messages about mismatched tags may be misleading (ie, they are actually due to *other* errors, further down in the code):</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><a href="http://www.impredicative.com/wiki/index.php/Ur_FAQ">http://www.impredicative.com/wiki/index.php/Ur_FAQ</a></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Apparently there are still some errors in my code - perhaps involving parens, braces, or other delimiters such as 'let ... in ... end' or closing tags?</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Thanks if anyone can provide any insight on these errors involving </font><span style="font-family:monospace,monospace">"mismatched tag" etc.</span></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"><br></font></div><div><br></div></div>