<div dir="ltr">Hi Michael,<div><br></div><div>I am afraid I cannot give you "definitive" answers for much of your questions. Anyway, I will try my best :)</div><div><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">- Is there a more convenient syntax for list construction than "1 :: 2 :: 3 :: []", something like "[1, 2, 3]"?<br></blockquote><div>I am afraid there is not.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- I had to pass both a "gameState" and a "source gameState" parameter to the "render" function (for the same game state). Is there a way around that?<br></blockquote><div>Yes. You can change the render function to produce a "signal xbody" rather than producing a "xbody":</div><div><br></div><div><div>fun render (sgs : source gameState) : signal xbody =</div><div>    gs <- signal sgs;</div><div>    return (let</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">         </span>fun cols (row : int) (col : int) : xtr =</div></div><div>(* ... *)</div><div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                </span></xml></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>    end)</div></div><div><br></div><div>Now you can pass the signal render produces to the signal attribute of the dyn tag:</div><div><br></div><div><div>(* Entry point of the program. *)</div><div>fun main () : transaction page =</div><div>(* ... *)</div><div>        <dyn signal={render state} /><br></div><div>(* ... *)</div><div>        </body></xml></div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- I minimized the use of mutable data. So when the game state changes much of the page gets updated. This should probably be done in a more fine-grained way in reality.<br></blockquote><div>As long there is no performance problem, I think your implementation is fine.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- Does Ur/Web do tail-call optimization?<br></blockquote><div>I believe it does.</div><div><br></div><div>Sincerely,</div><div>Saulo</div></div></div></div>