[Haskell-cafe] Trouble with the ST monad

Andre Nathan andre at digirati.com.br
Mon Dec 29 15:43:56 EST 2008


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



More information about the Haskell-Cafe mailing list