On Tue, Sep 28, 2010 at 8:36 PM, Antoine Latter <[email protected]> wrote: > On Tue, Sep 28, 2010 at 10:10 PM, David Fox <[email protected]> wrote: >> I'm seeing errors like this in various places, which I guess are >> coming from the new type checker: >> >> Data/Array/Vector/Prim/BUArr.hs:663:3: >> Couldn't match type `s' with `s3' >> because this skolem type variable would escape: `s3' >> This skolem is bound by the polymorphic type `forall s. ST s a' >> The following variables have types that mention s >> fill0 :: MBUArr s e -> ST s Int >> (bound at Data/Array/Vector/Prim/BUArr.hs:669:5) >> In the first argument of `runST', namely >> `(do { marr <- newMBU n; >> n' <- fill0 marr; >> unsafeFreezeMBU marr n' })' >> > > GHC no longer generalizes local bindings - which means that while > previously the 'where' defined function would have had a type: > >> fill0 :: forall s . ... -> ST s Int > > Where the elipsis indicates an unspecified portion of the local type > signature. > > I would recommend writing a type signature, but that requires writing > a type signature for it's helper function: > >> fill s i = ... > > Except I don't know how to write a type signature for this. > > The value 's' passed in is bound by pattern matching on this guy's > constructor: > > data Stream a = forall s. Stream (s -> Step s a) !s Int > > in the top-level function, so I don't even know if it has a type I can name. > > I'll try to boil this down to something I can put on hpaste. > > Antoine >
I have to say, as an everyday joe programmer, that the obscurity of this message disturbs me. I hope I don't see it very often. _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
