[Template-haskell] RE: [ ghc-Bugs-820778 ] Malformed Predicate
w/ Template Haskell
Simon Peyton-Jones
simonpj at microsoft.com
Fri Oct 31 10:13:13 EST 2003
I was wrong. Multi-parameter classes are there. What was wrong was
that Jon Cast's program constructed the predicate
varT "Flatten" `appT` t
whereas he should have used "conT". So there are two issues really:
1. It is in fact legal to have predicates like (m Int)
forall m. (m Int) => ...
but hsSyn/Convert.lhs didn't handle that. I've fixed that.
2. But it's really an error to allow (varT "T") or (conT "x") at all.
Haskell does not
allow lower-case type constructors or upper case type variables. So,
should varT, conT
test and fall over? Or should we instead remove the distinction between
varT and conT?
Simon
| -----Original Message-----
| From: Wolfgang Thaller [mailto:wolfgang.thaller at gmx.net]
| Sent: 30 October 2003 21:24
| To: Simon Peyton-Jones
| Cc: <template-haskell at haskell.org> <template-haskell at haskell.org>
| Subject: Re: [Template-haskell] RE: [ ghc-Bugs-820778 ] Malformed
Predicate w/ Template Haskell
|
| > TH maestros
| >
| > This bug turns out to be simply that Template Haskell is only set up
| > for
| > Haskell 98, whereas Jon Cast wants to manipulate multi-parameter
type
| > clases.
| >
| > Should we add multi-param type classes to THSyntax? Does anyone
feel
| > like doing it? It's a fairly routine matter, but it does mean
changing
| > the data type. (Another reason to use bracket syntax!)
| >
| > Simon
|
| Hmmm... I've been using some simple multi-param type classes (no
| fundeps) with Template Haskell and GHC from the STABLE cvs tree, and
| I've experienced no problems, so I thought they were supported.
| They *are* a very useful feature that I don't think I could do without
| - what needs to be done to keep them at least as supported as they are
| now?
|
| Cheers,
|
| Wolfgang
|
More information about the template-haskell
mailing list