"less polymophic" problem
Tue, 29 Apr 2003 19:17:41 -0700
I don't know how to solve this problem. Using GHC 5.04.3.
The following snippet shows the problem, as minimally as I could.
tl2 = ["123","abc","def"]
tl3 = newSTRef tl2
-- this works:
tl3unref = runST(tl3 >>= \ref -> readSTRef ref)
-- this code, the same but with a formal parameter, doesn't compile:
-- this is line 61 in the error message below
getaline rlines = runST(rlines >>= \ref -> readSTRef ref)
--ghci complains as follows:
Inferred type is less polymorphic than expected
Quantified type variable `s' escapes
It is mentioned in the environment:
rlines :: ST s (STRef s a) (bound at misstring.hs:61)
In the first argument of `runST', namely
`(rlines >>= (\ ref -> readSTRef ref))'
In the definition of `getaline':
runST (rlines >>= (\ ref -> readSTRef ref))
-- I tried the following signature for getaline:
getaline :: forall s. ST s (STRef s [[Char]]) -> [[Char]]
-- which does not change the error. The type in the signature for
-- rlines is that displayed by ghci for tl3
Any help will be greatly appreciated.