Re: generation of type signatures for Accessors

Nicolas Pouillard <[email protected]> Tue, 24 Mar 2009 23:26:14 +0100
Newsgroups gmane.comp.lang.haskell.template
Message-ID <[email protected]>
--=-1237933574-324082-56441-2684-1-=
Content-Type: text/plain; charset=UTF-8
Content-Disposition: inline

Excerpts from brian's message of Tue Mar 24 18:22:17 +0100 2009:
> On Tuesday, 24.03.09 at 09:45, Nicolas Pouillard wrote:
> > Excerpts from brian's message of Tue Mar 24 03:22:51 +0100 2009:
> > > Hey, I'm trying to modify data-accessor-template 'deriveAccessors' to
> > > generate type signatures so -Wall doesn't complain.
> > 
> > You should look at data-accessor-template-0.2.1 for solution then ;)
> 
> Well, Henning released 0.2.1 because of the patch I sent him. Various
> projects are breaking right now because I didn't know about the
> parameterized records thing. That's why I'm asking on the list.

Ooops, I could have said something more useful then :)

Basically one have to ask for the parameters of the type (`a' here).
One then have to use these parameters to build a fully applied type
(`P a' here), finally one must bind those type variables using a
universal quantification (`forall a.' here).

I attach a darcs patch that does exactly this. However I've only
tested a few test cases.

PS: I've put Henning in copy of this message.

-- 
Nicolas Pouillard

--=-1237933574-324082-56441-2684-1-=
Content-Disposition: attachment;
	filename="generate-valid-signatures-for-accessor-in-presence-of-parameterized-types_.dpatch"
Content-Type: application/octet-stream;
	name="generate-valid-signatures-for-accessor-in-presence-of-parameterized-types_.dpatch"
Content-Transfer-Encoding: base64

VHVlIE1hciAyNCAyMzoxODoyNSBDRVQgMjAwOSAgTmljb2xhcyBQb3VpbGxh
cmQgPG5pY29sYXMucG91aWxsYXJkQGdtYWlsLmNvbT4KICAqIEdlbmVyYXRl
IHZhbGlkIHNpZ25hdHVyZXMgZm9yIGFjY2Vzc29yIGluIHByZXNlbmNlIG9m
IHBhcmFtZXRlcml6ZWQgdHlwZXMuCgpOZXcgcGF0Y2hlczoKCltHZW5lcmF0
ZSB2YWxpZCBzaWduYXR1cmVzIGZvciBhY2Nlc3NvciBpbiBwcmVzZW5jZSBv
ZiBwYXJhbWV0ZXJpemVkIHR5cGVzLgpOaWNvbGFzIFBvdWlsbGFyZCA8bmlj
b2xhcy5wb3VpbGxhcmRAZ21haWwuY29tPioqMjAwOTAzMjQyMjE4MjUKIEln
bm9yZS10aGlzOiBiYmYyNWU3MjRjZDg3ZGFiYmRmZjM0MWJkMDU0YWI3MApd
IHsKaHVuayAuL3RlbXBsYXRlL3NyYy9EYXRhL0FjY2Vzc29yL1RlbXBsYXRl
LmhzIDczCiAgICAgcmVpZmllZCA8LSBjYXNlIGluZm8gb2YKICAgICAgICAg
ICAgICAgICAgICAgVHlDb25JIGRlYyAtPiByZXR1cm4gZGVjCiAgICAgICAg
ICAgICAgICAgICAgIF8gLT4gZmFpbCBlcnJtc2cKLSAgICBjb25zIDwtIGNh
c2UgcmVpZmllZCBvZgotICAgICAgICAgICAgICAgICBEYXRhRCBfIF8gXyBj
b25zJyBfIC0+IHJldHVybiBjb25zJwotICAgICAgICAgICAgICAgICBOZXd0
eXBlRCBfIF8gXyBjb24nIF8gLT4gcmV0dXJuIFtjb24nXQorICAgIChwYXJh
bXMsIGNvbnMpIDwtIGNhc2UgcmVpZmllZCBvZgorICAgICAgICAgICAgICAg
ICBEYXRhRCBfIF8gcGFyYW1zIGNvbnMnIF8gLT4gcmV0dXJuIChwYXJhbXMs
IGNvbnMnKQorICAgICAgICAgICAgICAgICBOZXd0eXBlRCBfIF8gcGFyYW1z
IGNvbicgXyAtPiByZXR1cm4gKHBhcmFtcywgW2NvbiddKQogICAgICAgICAg
ICAgICAgICBfIC0+IGZhaWwgZXJybXNnCmh1bmsgLi90ZW1wbGF0ZS9zcmMv
RGF0YS9BY2Nlc3Nvci9UZW1wbGF0ZS5ocyA3NwotICAgIGRlY3MgPC0gbGlm
dE0gY29uY2F0ICQgbWFwTSBtYWtlQWNjcyBjb25zCisgICAgZGVjcyA8LSBs
aWZ0TSBjb25jYXQgJCBtYXBNIChtYWtlQWNjcyBwYXJhbXMpIGNvbnMKICAg
ICB3aGVuIChudWxsIGRlY3MpICQgcVJlcG9ydCBGYWxzZSBub2RlZm1zZwog
ICAgIHJldHVybiBkZWNzCiAKaHVuayAuL3RlbXBsYXRlL3NyYy9EYXRhL0Fj
Y2Vzc29yL1RlbXBsYXRlLmhzIDkzCiAgICAgICAgICAgKysgIlxuICAgIG5h
bWVEZXJpdmVBY2Nlc3NvcnMsIHJlbWVtYmVyIGFjY2Vzc29ycyBhcmUiCiAg
ICAgICAgICAgKysgIlxuICAgIG9ubHkgZ2VuZXJhdGVkIGZvciBmaWVsZHMg
ZW5kaW5nIHdpdGggYW4gdW5kZXJzY29yZSIKIAotICAgIG1ha2VBY2NzIDo6
IENvbiAtPiBRIFtEZWNdCi0gICAgbWFrZUFjY3MgKFJlY0MgXyB2YXJzKSA9
Ci0gICAgICAgIGxpZnRNIChjb25jYXQgLiBjYXRNYXliZXMpICQgbWFwTSAo
XCAobmFtZSxfLGZ0eXBlKSAtPiBtYWtlQWNjRnJvbU5hbWUgbmFtZSBmdHlw
ZSkgdmFycwotICAgIG1ha2VBY2NzIChGb3JhbGxDIF8gXyBjKSA9IG1ha2VB
Y2NzIGMKLSAgICBtYWtlQWNjcyBfID0gcmV0dXJuIFtdCisgICAgbWFrZUFj
Y3MgOjogW05hbWVdIC0+IENvbiAtPiBRIFtEZWNdCisgICAgbWFrZUFjY3Mg
cGFyYW1zIChSZWNDIF8gdmFycykgPQorICAgICAgICBsaWZ0TSAoY29uY2F0
IC4gY2F0TWF5YmVzKSAkIG1hcE0gKFwgKG5hbWUsXyxmdHlwZSkgLT4gbWFr
ZUFjY0Zyb21OYW1lIG5hbWUgcGFyYW1zIGZ0eXBlKSB2YXJzCisgICAgbWFr
ZUFjY3MgcGFyYW1zIChGb3JhbGxDIF8gXyBjKSA9IG1ha2VBY2NzIHBhcmFt
cyBjCisgICAgbWFrZUFjY3MgXyBfID0gcmV0dXJuIFtdCiAKICAgICB0cmFu
c2Zvcm1OYW1lIDo6IE5hbWUgLT4gTWF5YmUgTmFtZQogICAgIHRyYW5zZm9y
bU5hbWUgKE5hbWUgb2NjIGYpID0gZG8KaHVuayAuL3RlbXBsYXRlL3NyYy9E
YXRhL0FjY2Vzc29yL1RlbXBsYXRlLmhzIDEwNAogICAgICAgICBuIDwtIG5h
bWVyIChvY2NTdHJpbmcgb2NjKQogICAgICAgICByZXR1cm4gJCBOYW1lICht
a09jY05hbWUgbikgZgogCi0gICAgbWFrZUFjY0Zyb21OYW1lIDo6IE5hbWUg
LT4gVHlwZSAtPiBRIChNYXliZSBbRGVjXSkKLSAgICBtYWtlQWNjRnJvbU5h
bWUgbmFtZSBmdHlwZSA9IGRvCisgICAgbWFrZUFjY0Zyb21OYW1lIDo6IE5h
bWUgLT4gW05hbWVdIC0+IFR5cGUgLT4gUSAoTWF5YmUgW0RlY10pCisgICAg
bWFrZUFjY0Zyb21OYW1lIG5hbWUgcGFyYW1zIGZ0eXBlID0gZG8KICAgICAg
ICAgY2FzZSB0cmFuc2Zvcm1OYW1lIG5hbWUgb2YKICAgICAgICAgICAgIE5v
dGhpbmcgLT4gcmV0dXJuIE5vdGhpbmcKaHVuayAuL3RlbXBsYXRlL3NyYy9E
YXRhL0FjY2Vzc29yL1RlbXBsYXRlLmhzIDEwOAotICAgICAgICAgICAgSnVz
dCBuIC0+IGxpZnRNIEp1c3QgJCBtYWtlQWNjIG5hbWUgZnR5cGUgbgorICAg
ICAgICAgICAgSnVzdCBuIC0+IGxpZnRNIEp1c3QgJCBtYWtlQWNjIG5hbWUg
cGFyYW1zIGZ0eXBlIG4KIAogICAgIC0tIGhhZGRvY2sgZG9lc24ndCBncm9r
IFRICiAjaWZuZGVmIF9fSEFERE9DS19fCmh1bmsgLi90ZW1wbGF0ZS9zcmMv
RGF0YS9BY2Nlc3Nvci9UZW1wbGF0ZS5ocyAxMTMKIAotICAgIG1ha2VBY2Mg
OjogTmFtZSAtPiBUeXBlIC0+IE5hbWUgLT4gUSBbRGVjXQotICAgIG1ha2VB
Y2MgbmFtZSBmdHlwZSBhY2NOYW1lID0gZG8KKyAgICBtYWtlQWNjIDo6TmFt
ZSAtPiBbTmFtZV0gLT4gVHlwZSAtPiBOYW1lIC0+IFEgW0RlY10KKyAgICBt
YWtlQWNjIG5hbWUgcGFyYW1zIGZ0eXBlIGFjY05hbWUgPSBkbworICAgICAg
ICBsZXQgYXBwbGllZFQgPSBmb2xkbCBBcHBUIChDb25UIHQpIChtYXAgVmFy
VCBwYXJhbXMpCiAgICAgICAgIGJvZHkgPC0gW3wKICAgICAgICAgICAgICAg
ICAgQWNjZXNzb3IuZnJvbVNldEdldAogICAgICAgICAgICAgICAgICAgICAo
IFx4IHMgLT4KaHVuayAuL3RlbXBsYXRlL3NyYy9EYXRhL0FjY2Vzc29yL1Rl
bXBsYXRlLmhzIDEyMwogICAgICAgICAgICAgICAgICAgICAoICQoIHJldHVy
biAkIFZhckUgbmFtZSApICkKICAgICAgICAgICAgICAgICB8XQogICAgICAg
ICByZXR1cm4KLSAgICAgICAgICBbIFNpZ0QgYWNjTmFtZSAoQXBwVCAoQXBw
VCAoQ29uVCAnJ0FjY2Vzc29yLlQpIChDb25UIHQpKSBmdHlwZSkKKyAgICAg
ICAgICBbIFNpZ0QgYWNjTmFtZSAoRm9yYWxsVCBwYXJhbXMgW10gKEFwcFQg
KEFwcFQgKENvblQgJydBY2Nlc3Nvci5UKSBhcHBsaWVkVCkgZnR5cGUpKQog
ICAgICAgICAgICwgVmFsRCAoVmFyUCBhY2NOYW1lKSAoTm9ybWFsQiBib2R5
KSBbXQogICAgICAgICAgIF0KIAp9CgpDb250ZXh0OgoKW1RlbXBsYXRlLnN0
cmlwVW5kZXJzY29yZTogdXNlIHZpZXdSIGluc3RlYWQgb2YgbGFzdCBhbmQg
aW5pdCBzaW5jZSB0aGlzIHNhZmVseSBwcmV2ZW50ICdlcnJvcidzCmhhc2tl
bGxAaGVubmluZy10aGllbGVtYW5uLmRlKioyMDA5MDMxMjE2MTc1MV0gCltn
ZW5lcmF0ZSB0eXBlIHNpZ25hdHVyZSBmb3IgYWNjZXNzb3JzIChwYXRjaCBi
eSBicmlhbkBsb3JmLm9yZykKaGFza2VsbEBoZW5uaW5nLXRoaWVsZW1hbm4u
ZGUqKjIwMDkwMzEyMTYwNTEyXSAKW0Jhc2ljLmxpZnQKaGFza2VsbEBoZW5u
aW5nLXRoaWVsZW1hbm4uZGUqKjIwMDkwMzAyMTUyOTQwXSAKW2J1bXAgdmVy
c2lvbiBtb25hZCBzdWJwYWNrYWdlcyB0byAwLjIuMQpoYXNrZWxsQGhlbm5p
bmctdGhpZWxlbWFubi5kZSoqMjAwOTAyMjYyMjAwMDBdIApbbW9uYWRzLWZk
LCBtdGwsIHRyYW5zZm9ybWVyczogc3ViLXBhY2thZ2VzIGZvciBoYW5kbGlu
ZyBBY2Nlc3NvcnMgb24gU3RhdGUgaW4gdmFyaW91cyBNVEwgZm9ya3MKaGFz
a2VsbEBoZW5uaW5nLXRoaWVsZW1hbm4uZGUqKjIwMDkwMjI2MjE1NDU5XSAK
W3J1biB0ZXN0IHZpYSBNYWtlZmlsZQpoYXNrZWxsQGhlbm5pbmctdGhpZWxl
bWFubi5kZSoqMjAwOTAyMjYyMTIxNDVdIApbYnVtcCB2ZXJzaW9uIHRvIDAu
Mi4xCmhhc2tlbGxAaGVubmluZy10aGllbGVtYW5uLmRlKioyMDA5MDExMDIy
NDIxOV0gCltUQUcgMC4yLjAuMgpoYXNrZWxsQGhlbm5pbmctdGhpZWxlbWFu
bi5kZSoqMjAwOTAxMTAyMjIzNTJdIApbcmVsYXggdmVyc2lvbiBkZXBlbmRl
bmN5IG9uIHRyYW5zZm9ybWVycwpoYXNrZWxsQGhlbm5pbmctdGhpZWxlbWFu
bi5kZSoqMjAwOTAxMTAyMjIwMTddIApbVEFHIDAuMi4wLjEKaGFza2VsbEBo
ZW5uaW5nLXRoaWVsZW1hbm4uZGUqKjIwMDkwMTA2MDEwMDU2XSAKUGF0Y2gg
YnVuZGxlIGhhc2g6CjA4MTc0ZjE3MjUxNmU2NTBjZDJmMGVhM2Y3YzUzODM4
MWQ2OWYwMDkK

--=-1237933574-324082-56441-2684-1-=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
template-haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/template-haskell

--=-1237933574-324082-56441-2684-1-=--