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

Reply via email to