[Haskell-cafe] More STUArray questions
haskell at list.mightyreason.com
Sun Mar 12 15:51:57 EST 2006
Martin Percossi wrote:
> On Sun, Mar 12, 2006 at 10:37:45PM +0300, Bulat Ziganshin wrote:
>> runSTMatrix :: ST s (MMatrix s) -> Matrix
>> runSTMatrix a = runST ( do (MMatrix i j mblock) <- a
>> block <- unsafeFreeze mblock
>> return (Matrix i j block)
There is a small error in the type of runSTMatrix, see below
> I tried this implementation, but I still get an error message, which
> looks quite similar to my previous implementations' errors:
> Couldn't match the rigid variable `s' against the rigid variable `s1'
> `s' is bound by the polymorphic type `forall s. ST s a'
> at matrix.hs:(138,16)-(141,22)
> `s1' is bound by the type signature for `runSTMatrix'
> Expected type: ST s
> Inferred type: ST s1
> In a 'do' expression: (MMatrix i j mblock) <- a
> In the first argument of `runST', namely
> (MMatrix i j mblock) <- a
> block <- unsafeFreeze mblock
> return (Matrix i j block))'
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)
More information about the Haskell-Cafe