> The following works fine with GHC 3.00:
>
> class Variable v where
> updVar :: v a -> (a -> IO (a,b)) -> IO b
>
> applyVar :: Variable v => v a -> (a -> a) -> IO a
> applyVar v f = updVar' v (\x -> let x' = f x in (x',x'))
>
> By changing the definition of applyVar to
>
> applyVar :: Variable v a => v a -> (a -> a) -> IO a
> applyVar v f = updVar' v (\x -> let x' = f x in (x',x'))
>
> where it appears as if the class Variable takes two type parameters, then
> GHC 3.00 panics with:
>
> panic! (the `impossible' happened):
> unifyKinds: length mis-match
Great bug report; easily fixed. Thanks. The fix will be in the
next (source) release.
S