
On Sun, Mar 12, 2006 at 08:51:57PM +0000, Chris Kuklewicz wrote:
There is a small error in the type of runSTMatrix, see below runSTMatrix :: (forall s. ST s (MMatrix s)) -> Matrix
runSTMatrix a = runST ( do (MMatrix i j mblock) <- a block <- unsafeFreeze mblock return (Matrix i j block) )
Hmm... now I get matrix.hs:138:27: Couldn't match the rigid variable `.' against `ST' `.' is bound by the type signature for `runSTMatrix' Expected type: ST s Inferred type: . (forall s1) In a 'do' expression: (MMatrix i j mblock) <- a In the first argument of `runST', namely `(do (MMatrix i j mblock) <- a block <- unsafeFreeze mblock return (Matrix i j block))' matrix.hs:150:32: Couldn't match `ST s (MMatrix s)' against `MMatrix (forall s)' Expected type: ST (forall s) (ST s (MMatrix s)) Inferred type: ST (forall s) (MMatrix (forall s)) In the first argument of `runSTMatrix', namely `runMatrix' In the second argument of `($)', namely `runSTMatrix runMatrix' Failed, modules loaded: none. Martin