RE: Parsing kinds in external core

Simon Peyton-Jones <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.all,gmane.comp.lang.haskell.cvs.ghc
Message-ID <DCA83D5F3861C941808187D4D387875036FB4256@EA-EXMSG-C312.europe.corp.microsoft.com>
Sorry for a slow reply.

You definitely cannot infer kinds for an arbitrary FC program.  The right thing to do is to *stop* using Type inside a KindedTyVar (always a hack) and instead use HsType.  That'll require some work to make the existing setup work again, but I think it's the Right Thing.

Simon

| -----Original Message-----
| From: [email protected] [mailto:[email protected]]
| On Behalf Of Aaron Tomb
| Sent: 14 December 2006 23:52
| To: [email protected]
| Subject: Parsing kinds in external core
|
| Hi,
|
| I encountered what might be a problem with parsing External Core
| using HsType to represent types, though it might be possible to work
| around it. It comes up when reading in a type variable with a kind
| annotation which may be a type equality kind. These are represented
| in HsType as the KindedTyVar alternative of HsTyVarBndr, which takes
| a Kind as its second argument. However, Kind is just a name for Type
| (not HsType), and thus it contains Names. Before type equality kinds
| existed, this wasn't a problem, because no kind could contain type
| variables. But now they can.
|
| So, to properly construct an appropriate Kind seems like it would
| require running the renamer early on (probably in the parser), which
| sounds like a headache, if its even feasible at all.
|
| Alternatively, we could ignore kind annotations in the parser (at
| least for equality kinds) and create UserTyVars instead of
| KindedTyVars. I believe it would then be possible to use existing
| machinery to infer them later on (and, if I understand correctly, the
| old implementation did this). Is it true that we can always infer
| kinds?
|
| One problem with that approach, even if inference is no problem, is
| that errors in kind annotations would be ignored. Maybe that doesn't
| really matter.
|
| In any case, it seems to make sense to leave kind annotations in the
| concrete syntax for External Core, because even if GHC can infer
| them, they might make other implementations that use External Core
| somewhat easier.
|
| Aaron
|
| _______________________________________________
| Cvs-ghc mailing list
| [email protected]
| http://www.haskell.org/mailman/listinfo/cvs-ghc
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.