From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 139C27FE36 for ; Fri, 3 Jun 2016 17:42:26 +0200 (CEST) IronPort-PHdr: 9a23:hKp4Dh2VtOqh6N+PsmDT+DRfVm0co7zxezQtwd8ZsegfKfad9pjvdHbS+e9qxAeQG96LurQa0KGG4ujJYi8p39WoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6kO74TNaIBjjLw09fr2zQd6DyZrsnLDjs7ToICx2xxOFKYtoKxu3qQiD/uI3uqBFbpgL9x3Sv3FTcP5Xz247bXianhL7+9vitMU7q3cYk7sb+sVBSaT3ebgjBfwdVWx+cjN92Mq+lxDIVBaC/TMzW38MkxVVDkCR4xjgRJb+rybSs+Nh2G+cNMLxXLlxRHKr5OFpUEm7pj0AMmtz22jNh9BsgeYTghuqvgFy2MScNIqcLvdiYq71eNgfTHFdU9wXXCUXUdD0VJcGE+dUZbUQlIL6vVZb6ELmXQQ= Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=carette@mcmaster.ca; spf=None smtp.mailfrom=carette@mcmaster.ca; spf=None smtp.helo=postmaster@FHSHC4H16-2.csu.mcmaster.ca Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of carette@mcmaster.ca) identity=pra; client-ip=130.113.22.4; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="carette@mcmaster.ca"; x-sender="carette@mcmaster.ca"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of carette@mcmaster.ca) identity=mailfrom; client-ip=130.113.22.4; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="carette@mcmaster.ca"; x-sender="carette@mcmaster.ca"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@FHSHC4H16-2.csu.mcmaster.ca) identity=helo; client-ip=130.113.22.4; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="carette@mcmaster.ca"; x-sender="postmaster@FHSHC4H16-2.csu.mcmaster.ca"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0C1AACgpFFXfgQWcYJbDoMAgQJ9BrpUgXkahXgCgTc4FAEBAQEBAQEBEQEBCwsJCSEvgjCCFQEBAQQnRwsQAgEIEQQBAQEKJAIwHQgBAQQOBQgGiCEBwm0BAQEBAQEBAQEBAQEBAQEBAQEBAQEODop0hEIVJ4Jugi4FmD8GAYMsgWltigpOhy2FOI9SHoNpO26JEwF+AQEB X-IPAS-Result: A0C1AACgpFFXfgQWcYJbDoMAgQJ9BrpUgXkahXgCgTc4FAEBAQEBAQEBEQEBCwsJCSEvgjCCFQEBAQQnRwsQAgEIEQQBAQEKJAIwHQgBAQQOBQgGiCEBwm0BAQEBAQEBAQEBAQEBAQEBAQEBAQEODop0hEIVJ4Jugi4FmD8GAYMsgWltigpOhy2FOI9SHoNpO26JEwF+AQEB X-IronPort-AV: E=Sophos;i="5.26,412,1459807200"; d="ml'?scan'208";a="221017562" Received: from fhshc4h16-2.csu.mcmaster.ca ([130.113.22.4]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES256-SHA; 03 Jun 2016 17:42:24 +0200 Received: from FHSDB2D11-2.csu.mcmaster.ca ([fe80::2924:2ca:3cbc:4521]) by FHSHC4H16-2.csu.mcmaster.ca ([2002:8271:1604::8271:1604]) with mapi id 14.03.0279.002; Fri, 3 Jun 2016 11:42:22 -0400 From: "Carette, Jacques" To: Jacques Garrigue CC: OCaML List Mailing Thread-Topic: [Caml-list] Option to fully expand types in error messages? Thread-Index: AdG9A5GLssEk6Qd8TUiu0LqSgShZcwASLzMAABhpMFM= Date: Fri, 3 Jun 2016 15:42:22 +0000 Message-ID: References: , In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [130.113.22.227] x-tm-as-product-ver: SMEX-11.0.0.1191-8.000.1202-22370.000 x-tm-as-result: No--44.024500-8.000000-31 x-tm-as-user-approved-sender: No x-tm-as-user-blocked-sender: No Content-Type: multipart/mixed; boundary="_002_F7B18907EEED5244A3608C61DF32A4E410D5B39AFHSDB2D112csumc_" MIME-Version: 1.0 Subject: RE: [Caml-list] Option to fully expand types in error messages? --_002_F7B18907EEED5244A3608C61DF32A4E410D5B39AFHSDB2D112csumc_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable So here is an actual example. The error I get is ocamlc -short-paths -c reproduce.ml=20 File "reproduce.ml", line 148, characters 21-25: Error: Signature mismatch: ... Values do not match: val traverseexercise : 'a container PseudoCode.abstract -> ('a PseudoCode.abstract -> 'b PseudoCode.abstract -> ('c * 'b) PseudoCode.abstract) -> 'b PseudoCode.abstract -> 'd container -> ('d container -> 'c container PseudoCode.abstract -> 'e) -> 'e is not included in val traverseexercise : loopdata container PseudoCode.abstract -> (loopdata PseudoCode.abstract -> loopdata PseudoCode.abstract -> (loopdata * loopdata) PseudoCode.abstract) -> loopdata PseudoCode.abstract -> (< answer : 'a; state : 'b; .. >, loopdata) PseudoCode.cmonad File "reproduce.ml", line 111, characters 6-206: Expected declaration File "reproduce.ml", line 125, characters 8-24: Actual declaration I can't tell from the above error what the actual cause is. The full code = is attached. [This code is quite reduced already. It is kept at this size= to show in more detail the kinds of errors we're seeing.] Any 'hint' from OCaml as to the precise nature of the non-match would sure = be appreciated. Jacques ________________________________________ From: Jacques Garrigue [garrigue@math.nagoya-u.ac.jp] Sent: June 2, 2016 19:59 To: Carette, Jacques Cc: OCaML List Mailing Subject: Re: [Caml-list] Option to fully expand types in error messages? On 2016/06/03 04:18, "Carette, Jacques" wrote: > > In writing some code which uses a lot of monads with underlying types whi= ch use constraints, even simple errors can lead to extremely hard to read e= rror messages. The main reason is that the two types given in errors are p= artially expanded, to different levels. This frequently means that the par= t where the type checker detects a mismatch is (extremely) opaque to human = eyes. > > In that case, it would actually be preferable to fully expand the types. = Yes, that will produce wallpaper. But at least the mismatch should be con= siderably easier to catch. > > Does this already exist, or should I submit a feature request? > > Jacques In the error message, types are expanded just enough to get down to the con= flict. If the conflict is not visible at that point, this is probably a scoping er= ror (and there should be an extra line stating that); otherwise this should be seen as a bug. As Yaron pointed, -short-paths can help by at least giving a normal form fo= r paths (which may not be the expansion, but should be unique in the error = context). But it will not expand a type if the expansion is not a type cons= tructor, or if the parameters are different. Jacques --_002_F7B18907EEED5244A3608C61DF32A4E410D5B39AFHSDB2D112csumc_ Content-Type: application/octet-stream; name="reproduce.ml" Content-Description: reproduce.ml Content-Disposition: attachment; filename="reproduce.ml"; size=4358; creation-date="Fri, 03 Jun 2016 15:42:00 GMT"; modification-date="Fri, 03 Jun 2016 15:42:00 GMT" Content-Transfer-Encoding: base64 dHlwZSAoJ3AsJ3YpIG1vbmFkID0gJ3MgLT4gKCdzIC0+ICd2IC0+ICd3KSAt PiAndw0KICBjb25zdHJhaW50ICdwID0gPHN0YXRlIDogJ3M7IGFuc3dlciA6 ICd3OyAuLj4NCg0KbGV0IHJldCAoYSA6J3YpIDogKCdwLCd2KSBtb25hZCA9 IGZ1biBzIGsgLT4gayBzIGENCg0KbGV0IChsZXQhKSAobSA6ICgncCwndikg bW9uYWQpIChmIDogJ3YgLT4gKCdwLCd1KSBtb25hZCkgOiAoJ3AsJ3UpIG1v bmFkDQogID0gZnVuIHMgayAtPiBtIHMgKGZ1biBzJyBiIC0+IGYgYiBzJyBr KQ0KDQpsZXQgazAgXyB2ID0gdg0KDQptb2R1bGUgdHlwZSBUID0gc2lnDQog IHR5cGUgJ2IgYWJzdHJhY3QNCg0KICB0eXBlICgncGMsJ3ApIGNtb25hZF9j b25zdHJhaW50ID0gdW5pdA0KICAgIGNvbnN0cmFpbnQNCiAgICAgICdwID0g PHN0YXRlIDogJ3MgbGlzdDsgYW5zd2VyIDogJ3cgYWJzdHJhY3Q+DQogICAg Y29uc3RyYWludA0KICAgICAgJ3BjID0gPGFuc3dlciA6ICd3OyBzdGF0ZSA6 ICdzOyAuLj4NCg0KICB0eXBlICgncGMsJ3YpIGNtb25hZCA9ICgncCwgJ3Yg YWJzdHJhY3QpIG1vbmFkDQogICAgY29uc3RyYWludCBfID0gKCdwYywncCkg Y21vbmFkX2NvbnN0cmFpbnQNCg0KICB2YWwgZ2VucmVjbG9vcCA6DQogICAg KCgnYiAtPiAnYykgYWJzdHJhY3QgLT4NCiAgICAnYiBhYnN0cmFjdCAtPiAn ZCAtPiAoJ2UgLT4gJ2MgYWJzdHJhY3QgLT4gJ2MgYWJzdHJhY3QpIC0+ICdj IGFic3RyYWN0KSAtPg0KICAgICdiIGFic3RyYWN0IC0+ICdkIC0+ICgnZCAt PiAnYyBhYnN0cmFjdCAtPiAnZykgLT4gJ2cNCiAgdmFsIGFwcGx5TSA6DQog ICAgKCdiIC0+ICdjKSBhYnN0cmFjdCAtPiAnYiBhYnN0cmFjdCAtPiAnZCAt PiAoJ2QgLT4gJ2MgYWJzdHJhY3QgLT4gJ2UpIC0+ICdlDQogIG1vZHVsZSBQ YWlyIDoNCiAgICBzaWcNCiAgICAgIHZhbCB1bnBhaXIgOiAoJ2IgKiAnYykg YWJzdHJhY3QgLT4gJ2IgYWJzdHJhY3QgKiAnYyBhYnN0cmFjdA0KICAgIGVu ZA0KICBtb2R1bGUgSWR4IDoNCiAgICBzaWcNCiAgICAgIHZhbCB6ZXJvIDog aW50IGFic3RyYWN0DQogICAgICB2YWwgc3VjYyA6IGludCBhYnN0cmFjdCAt PiBpbnQgYWJzdHJhY3QNCiAgICBlbmQNCiAgbW9kdWxlIFR1cGxlIDoNCiAg ICBzaWcNCiAgICAgIHZhbCB0dXAyIDogJ2IgYWJzdHJhY3QgLT4gJ2MgYWJz dHJhY3QgLT4gKCdiICogJ2MpIGFic3RyYWN0DQogICAgZW5kDQogIG1vZHVs ZSBDTGlzdCA6DQogICAgc2lnDQogICAgICB2YWwgbmlsIDogJ2IgbGlzdCBh YnN0cmFjdA0KICAgICAgdmFsIGNvbnMgOiAnYiBhYnN0cmFjdCAtPiAnYiBs aXN0IGFic3RyYWN0IC0+ICdiIGxpc3QgYWJzdHJhY3QNCiAgICAgIHZhbCBt YXRjaExpc3RNIDoNCiAgICAgICAgJ2IgbGlzdCBhYnN0cmFjdCAtPg0KICAg ICAgICAoJ3AsICdjKSBjbW9uYWQgLT4NCiAgICAgICAgKCdiIGFic3RyYWN0 IC0+ICdiIGxpc3QgYWJzdHJhY3QgLT4gKCdwLCAnYykgY21vbmFkKSAtPg0K ICAgICAgICAoJ3AsICdjKSBjbW9uYWQNCiAgICBlbmQNCmVuZA0KDQptb2R1 bGUgUHNldWRvQ29kZSA9IHN0cnVjdA0KDQogIHR5cGUgJ2IgYWJzdHJhY3Qg PSB1bml0IC0+ICdiDQoNCiAgdHlwZSAoJ3BjLCdwKSBjbW9uYWRfY29uc3Ry YWludCA9IHVuaXQNCiAgICBjb25zdHJhaW50DQogICAgICAncCA9IDxzdGF0 ZSA6ICdzIGxpc3Q7IGFuc3dlciA6ICd3IGFic3RyYWN0Pg0KICAgIGNvbnN0 cmFpbnQNCiAgICAgICdwYyA9IDxhbnN3ZXIgOiAndzsgc3RhdGUgOiAnczsg Li4+DQoNCiAgdHlwZSAoJ3BjLCd2KSBjbW9uYWQgPSAoJ3AsICd2IGFic3Ry YWN0KSBtb25hZA0KICAgIGNvbnN0cmFpbnQgXyA9ICgncGMsJ3ApIGNtb25h ZF9jb25zdHJhaW50DQogIGxldCBnZW5yZWNsb29wIGdlbiBydGFyZyA9IGZ1 biBzIGsgLT4gayBzDQogICAgKGZ1biAoKSAtPiBsZXQgcmVjIGxvb3AgaiA9 IGdlbiAoZnVuICgpIC0+IGxvb3ApIChmdW4gKCkgLT4gaikgcyBrMCAoKSBp bg0KICAgIGxvb3AgKHJ0YXJnICgpKSkNCiAgbGV0IGFwcGx5ICBmIHggPSBm dW4gKCkgLT4gKGYgKCkpICh4ICgpKQ0KICBsZXQgYXBwbHlNICBmIHggPSBy ZXQgKGFwcGx5IGYgeCkNCiAgbW9kdWxlIFBhaXIgPSBzdHJ1Y3QNCiAgKCog VG8gYmUgYWJsZSB0byBkZWNvbnN0cnVjdCBwYWlycyBpbiBtb25hZGljIGNv ZGU6DQogICAgcGVyZm9ybSAoYSxiKSA8LS0gcmV0ICh1bnBhaXIgcHYpICop DQogICAgbGV0IHVucGFpciB4ID0gKChmdW4gKCkgLT4gZnN0ICh4ICgpKSks IGZ1biAoKSAtPiBzbmQgKHggKCkpKQ0KICAgIGxldCBmc3QgeCA9IChmdW4g KCkgLT4gZnN0ICh4ICgpKSkNCiAgICBsZXQgc25kIHggPSAoZnVuICgpIC0+ IHNuZCAoeCAoKSkpDQogIGVuZA0KDQogIG1vZHVsZSBJZHggPSBzdHJ1Y3QN CiAgICBsZXQgemVybyA9IGZ1biAoKSAtPiAwDQogICAgbGV0IHN1Y2MgYSA9 IGZ1biAoKSAtPiAoYSAoKSkgKyAxDQogIGVuZA0KICBtb2R1bGUgVHVwbGUg PSBzdHJ1Y3QNCiAgICBsZXQgdHVwMiBhIGIgPSBmdW4gKCkgLT4gKCAoYSAo KSksIChiICgpKSApDQogIGVuZA0KICBtb2R1bGUgQ0xpc3QgPSBzdHJ1Y3QN CiAgICBsZXQgbmlsID0gZnVuICgpIC0+IFtdDQogICAgbGV0IGNvbnMgYSBi ID0gZnVuICgpIC0+IChhICgpKSA6OiAoYiAoKSkNCiAgICBsZXQgbWF0Y2hM aXN0TSBsIGVtcHR5IG5vbmVtcHR5ID0gZnVuIHMgayAtPiAoZnVuICgpIC0+ DQogICAgICBtYXRjaCBsICgpIHdpdGgNCiAgICAgICAgfCBbXSAgIC0+IGVt cHR5IHMgayAoKQ0KICAgICAgICB8IGg6OnQgLT4gbm9uZW1wdHkgKGZ1biAo KSAtPiBoKSAoZnVuICgpIC0+IHQpIHMgayAoKSkNCiAgZW5kDQplbmQNCg0K bW9kdWxlIHR5cGUgVmFsdWUgPSBzaWcNCiAgdHlwZSB2YWx1ZQ0KZW5kDQoN Cm1vZHVsZSBJbnRWID0gc3RydWN0DQogIHR5cGUgdmFsdWUgPSBpbnQNCmVu ZA0KDQptb2R1bGUgVHJhdmVyc2UgKENPREU6IFQpID0gc3RydWN0DQogIG9w ZW4gQ09ERQ0KDQogIG1vZHVsZSBDb250YWluZXJMaWIgKFY6VmFsdWUpIChM OlZhbHVlKSA9IHN0cnVjdA0KICAgIG1vZHVsZSB0eXBlIFNpZyA9IHNpZw0K ICAgICAgdHlwZSB2YWx1ZSA9IFYudmFsdWUNCiAgICAgIHR5cGUgJ2EgY29u dGFpbmVyDQogICAgICB0eXBlIGVsdGRlc2MNCiAgICAgIHR5cGUgbG9vcGRh dGEgPSBMLnZhbHVlDQogICAgICB2YWwgdHJhdmVyc2VleGVyY2lzZSA6DQog ICAgICAgIHZhbHVlIGNvbnRhaW5lciBhYnN0cmFjdCAtPg0KICAgICAgICAo ZWx0ZGVzYyBhYnN0cmFjdCAtPiBsb29wZGF0YSBhYnN0cmFjdCAtPiAodmFs dWUgKiBsb29wZGF0YSkgYWJzdHJhY3QpIC0+DQogICAgICAgIGxvb3BkYXRh IGFic3RyYWN0IC0+DQooKiAgICAgICAgICgnYSwgdmFsdWUgY29udGFpbmVy KSBjbW9uYWQgKikNCiAgICAgICAgKCdhLCB2YWx1ZSkgY21vbmFkDQogICAg ZW5kDQogIGVuZA0KDQogIG1vZHVsZSBMaXN0Q29udGFpbmVyTGliIChWIDog VmFsdWUpIChMIDogVmFsdWUpID0gc3RydWN0DQogICAgdHlwZSB2YWx1ZSA9 IFYudmFsdWUNCiAgICB0eXBlICdhIGNvbnRhaW5lciA9ICdhIGxpc3QNCiAg ICB0eXBlIGVsdGRlc2MgPSB2YWx1ZQ0KICAgIHR5cGUgbG9vcGRhdGEgPSBM LnZhbHVlDQoNCiAgICBsZXQgdHJhdmVyc2VleGVyY2lzZSBsc3QgZiBkYXRh ICA9DQogICAgICBsZXQgZ2VuIHNlbGYgdHVwID0NCiAgICAgIGxldCAobHN0 LCBpKSA9IFBhaXIudW5wYWlyIHR1cCBpbg0KICAgICAgQ0xpc3QubWF0Y2hM aXN0TSBsc3QNCiAgICAgICAgKHJldCBDTGlzdC5uaWwpDQogICAgICAgIChm dW4gaCB0IC0+DQogICAgICAgIGxldCAodiwgaTIpID0gUGFpci51bnBhaXIg KGYgKGgpIGkpIGluDQogICAgICAgIGxldCEgciA9IChhcHBseU0gc2VsZiAo VHVwbGUudHVwMiB0IGkyKSkgaW4NCiAgICAgICAgcmV0IChDTGlzdC5jb25z IHYgcikpDQogICAgICBpbiBnZW5yZWNsb29wIGdlbiAoVHVwbGUudHVwMiBs c3QgZGF0YSkNCiAgZW5kDQoNCiAgbW9kdWxlIEV4IChDb250YWluZXIgOiBD b250YWluZXJMaWIgKEludFYpIChJbnRWKS5TaWcpID0gc3RydWN0DQogICAg bGV0IHRyYXZlcnNlZXhlcmNpc2UgY29udGFpbmVyID0NCiAgICAgIGxldCBi b2R5ID0gZnVuIF8gbiAtPiBUdXBsZS50dXAyIG4gKElkeC5zdWNjIG4pIGlu DQogICAgICBDb250YWluZXIudHJhdmVyc2VleGVyY2lzZSBjb250YWluZXIg Ym9keSBJZHguemVybw0KICBlbmQNCg0KZW5kDQoNCm1vZHVsZSBUZXN0ID0g c3RydWN0DQogIG1vZHVsZSBUQyA9IFRyYXZlcnNlKFBzZXVkb0NvZGUpDQog IG1vZHVsZSBMQ0lJID0gVEMuTGlzdENvbnRhaW5lckxpYiAoSW50VikgKElu dFYpDQogIG1vZHVsZSBMVCA9IFRDLkV4IChMQ0lJKQ0KZW5kDQo= --_002_F7B18907EEED5244A3608C61DF32A4E410D5B39AFHSDB2D112csumc_--