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:
>
> matrix.hs:138:27:
> 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
> `(do
> (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)
)
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe