
On Mon, 2008-12-29 at 14:19 -0500, Ross Mellgren wrote:
The problem is that you're trying to take a STMatrix from some other ST computation and freeze it in a new ST computation. The isolation between separate computations is done via the rank-2 type variable "s" in all those ST functions.
I guess I should go and read the rank-n types page on the wiki...
Try this:
freezeMatrix :: (forall s . STMatrix s a) -> Matrix a freezeMatrix f :: runST (freezeMatrix f)
Do you know why point-free style doesn't work here even with the type annotation?
Also, instead of using an array of arrays, maybe an array with (Int, Int) as the Ix might be a bit smoother?
Thanks for the suggestion. It didn't occur to me that there was an Ix instance for that. Best, Andre