For the ghc-prim:PrimopWrappers module, GHC generates some External
Core bindings that look like:
ghc-prim:GHC.PrimopWrappers.touch# :: %forall t . t ->
(State# RealWorld)
-> (State#
RealWorld) =
ghc-prim:GHC.Prim.touch#;
But this doesn't look right, because GHC.Prim.touch# has type:
%forall (t::?) . t -> (State# RealWorld) -> (State# RealWorld)
Or at least it's declared that way in primops.txt. But the GHC
typechecker seems to think it has type:
%forall (t::*) . t -> (State# RealWorld) -> (State# RealWorld)
at least based on looking at the output of -ddump-tc-trace.
So is there some sort of implicit subkinding going on that I'm not
understanding? I would think that if the intention is for the wrapper
for touch# to require a type argument with kind *, then that would be
expressed by writing its body as (Prim.touch# t), not by giving it a
type signature that doesn't match the body type.
Thanks,
Tim
--
Tim Chevalier * http://cs.pdx.edu/~tjc * Often in error, never in doubt
"You can't learn everything you need to know legally."--John Irving
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc