On Tuesday 30 August 2005 06:32, [EMAIL PROTECTED] wrote: > Benjamin Franksen wrote: > > On Thursday 25 August 2005 19:58, Udo Stenzel wrote: > > > [...] you'll need a type signature somewhere to help ghc resolve > > > the overloading of newArray and readArray, which is surprisingly > > > tricky due to the "s" that must not escape. This works: > > > > > > compute :: Int -> Int > > > compute n = runST ( do > > > arr <- newArray (-1, 1) n :: ST s (STArray s Int Int) > > > readArray arr 1 > > > ) > > > > I am fighting with a similar problem. I want to use STUArray but > > without committing to a fixed element type. > > That problem has been addressed in a message > http://www.haskell.org/pipermail/haskell-cafe/2004-July/006400.html
Ups, I have missed this one. Next time I'll do a list search first. > which discussed several solutions. Given below is one of the > solutions adjusted to fit the question of the original poster. His > code is almost unchanged. > > It would havebeen nice if the GHC library supported the second > solution, a class Unpackable. Currently there are instances of > MArray (STUArray s) e (ST s) > and > IArray UArray e > for exactly the same set of types `e'. Alas, that condition is not > stated formally, so we cannot infer that MArray (STUArray s) e (ST s) > holds whenever IArray UArray e does. Any chance that the standard libraries will be changed along these lines? > > [snip complete solution] I almost suspected that I have to introduce some existentially quantified data type, but had no idea where and how. This would make a useful wiki page, BTW. Thanks a lot for the help. Ben _______________________________________________ Haskell mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell
