Your problem is that you&#39;re including the (i, j) in your array element type, when you really only want it to be in your index type (I assume). This would not normally be an issue, but an unboxed array doesn&#39;t work on an element type of ((Int, Int), Double).<div>
<br></div><div>You might consider instead making a new unboxed array with a default value of 0.0, and then forM_ an action that writes 1.0 at index (i, i).<br><br><div class="gmail_quote">On Tue, Apr 24, 2012 at 5:20 PM, KC <span dir="ltr">&lt;<a href="mailto:kc1956@gmail.com">kc1956@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>initIdentityMat :: Int -&gt; ST s (STUArray s (Int,Int) ((Int, Int), Double))</div><div>initIdentityMat m = newListArray ((1,m),(1,m)) ([((i,j), if i == j then 1.0 else 0.0) | i &lt;- [1..m], j &lt;- [1..m]] :: [((Int,Int), Double)])</div>

<div><br></div><div>Doesn&#39;t seem to compile, nor do minor variations of the type declaration.</div><span class="HOEnZb"><font color="#888888"><div><br></div>-- <br>--<br>Regards,<br>KC<br>
</font></span><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>