<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><font face="Menlo">While experimenting with a (trivial) custom instance of Array (to determine whether I may hope to use some of the new updating syntax with a more substantial instance), I encounter the following compile error:</font><div><font face="Menlo"><br></font><div><div><font face="Menlo">Error in backend: File backend.c, Line 654 (!(originalsdef-&gt;sdef_arfun == BEArrayUpdateFun))</font></div><div><font face="Menlo">clm: reading compiler result failed: No such file or directory</font></div></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">I get the same message, whether using clm 2.4 on Mac OS X or 2.3 on Linux.</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">I am alerting you to this error, as it seems to represent an undesired failure mode. But I also wonder in particular, d</font><font face="Menlo">oes the current release support </font><span style="font-family: Menlo; ">creating a custom instance of Array, and then exploiting the special updating syntax?</span></div><div><font face="Menlo"><br></font></div><div><div><span style="font-family: Menlo; ">The repro follows.</span></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">Best Regards,</font></div><div><font face="Menlo">David Norris</font></div></div><div><br></div><div><font face="Menlo">-------------------</font></div><div></div><div><font face="Menlo">TestArray.icl</font></div><div><font face="Menlo">-------------------</font></div><div><div><font face="Menlo">module TestArray</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">import _ArrayTest</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">Start:: Ar3 Int</font></div><div><font face="Menlo">Start # x = (A3 1 2 3)</font></div><div><font face="Menlo">&nbsp; &nbsp; &nbsp; = {x &amp; [2] = 7}</font></div></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">// Note that, by contrast, the following code compiles fine:</font></div><div><font face="Menlo">// Start:: (Int, Ar3 Int)</font></div><div><font face="Menlo">// Start # x = (A3 1 2 3)</font></div><div><font face="Menlo">// &nbsp; &nbsp; &nbsp; = replace x 2 7</font></div><div><font face="Menlo">//</font></div><div><font face="Menlo">// and gives the expected output:</font></div><div><font face="Menlo">//&nbsp;(2,(A3 1 7 3))</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">-------------------</font></div><div></div><div><font face="Menlo">_ArrayTest.dcl</font></div><div><font face="Menlo">-------------------</font></div><div><font face="Menlo">definition module _ArrayTest</font></div><div><div><font face="Menlo"><br></font></div><div><font face="Menlo">import StdEnv, StdInt, StdArray</font></div><div><font face="Menlo">import StdOverloaded</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">// Make a 3-element instance of Array</font></div><div><font face="Menlo">::Ar3 a = A3 a a a</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">instance Array Ar3 a</font></div></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">-------------------</font></div><div></div><div><font face="Menlo">_ArrayTest.icl</font></div><div><font face="Menlo">-------------------</font></div><div><div><font face="Menlo">implementation module _ArrayTest</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">import StdEnv, StdInt, StdArray</font></div><div><font face="Menlo">import StdOverloaded</font></div><div><font face="Menlo"><br></font></div><div><font face="Menlo">instance Array Ar3 a</font></div><div><font face="Menlo">where</font></div><div><font face="Menlo">&nbsp; &nbsp; select (A3 x y z) index</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 1 = x&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 2 = y&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 3 = z</font></div><div><font face="Menlo">&nbsp; &nbsp; = abort "Index out of range"&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; uselect (A3 x y z) index</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 1 = (x, A3 x y z)&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 2 = (y, A3 x y z)&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 3 = (z, A3 x y z)&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; = abort "Index out of range"&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; size arr = 3</font></div><div><font face="Menlo">&nbsp; &nbsp; usize arr = (3, arr)</font></div><div><font face="Menlo">&nbsp; &nbsp; update (A3 x y z) index el</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 1 = A3 el y z</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 2 = A3 x el z</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 3 = A3 x y el</font></div><div><font face="Menlo">&nbsp; &nbsp; = abort "Index out of range"&nbsp;</font></div><div><font face="Menlo">&nbsp; &nbsp; createArray size el = A3 el el el</font></div><div><font face="Menlo">&nbsp; &nbsp; _createArray size =</font></div><div><font face="Menlo">&nbsp; &nbsp; &nbsp; &nbsp; abort "_createArray should not be called"</font></div><div><font face="Menlo">&nbsp; &nbsp; replace (A3 x y z) index el</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 1 = (x, A3 el y z)</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 2 = (y, A3 x el z)</font></div><div><font face="Menlo">&nbsp; &nbsp; | index == 3 = (z, A3 x y el)</font></div><div><font face="Menlo">&nbsp; &nbsp; = abort "Index out of range"&nbsp;</font></div></div></div><div><font face="Menlo"><br></font></div><div><br></div><div><font face="Menlo"><br></font></div></body></html>