[Haskell-cafe] I am having trouble with the type declaration for creating an identity matrix.

Daniel Peebles pumpkingod at gmail.com
Wed Apr 25 00:01:59 CEST 2012

Your problem is that you'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't work on
an element type of ((Int, Int), Double).

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).

On Tue, Apr 24, 2012 at 5:20 PM, KC <kc1956 at gmail.com> wrote:

> initIdentityMat :: Int -> ST s (STUArray s (Int,Int) ((Int, Int), Double))
> initIdentityMat m = newListArray ((1,m),(1,m)) ([((i,j), if i == j then
> 1.0 else 0.0) | i <- [1..m], j <- [1..m]] :: [((Int,Int), Double)])
> Doesn't seem to compile, nor do minor variations of the type declaration.
> --
> --
> Regards,
> KC
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120424/4de206d5/attachment.htm>

More information about the Haskell-Cafe mailing list