<p dir="ltr">Great, thanks for doing this! I'm afraid even if you succeed with patch we would still need more "real-world examples" that show the need for this feature, and I think this is separate from GHC tests, as they don't need to be realistic, but of course please continue and hopefully more examples will come.</p>
<div class="gmail_quote">19 черв. 2015 16:19 "Ömer Sinan Ağacan" <<a href="mailto:omeragacan@gmail.com">omeragacan@gmail.com</a>> пише:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Done: <a href="https://ghc.haskell.org/trac/ghc/ticket/10547" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/10547</a><br>
<br>
2015-06-19 9:12 GMT-04:00 Richard Eisenberg <<a href="mailto:eir@cis.upenn.edu">eir@cis.upenn.edu</a>>:<br>
> Don't forget to make a Feature Request on Trac (<a href="https://ghc.haskell.org/trac/ghc/newticket" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/newticket</a>) with a link to the wiki page. Trac is really the only way things like this don't get lost.<br>
><br>
> Thanks!<br>
><br>
> Richard<br>
><br>
><br>
> On Jun 19, 2015, at 9:07 AM, Ömer Sinan Ağacan <<a href="mailto:omeragacan@gmail.com">omeragacan@gmail.com</a>> wrote:<br>
><br>
>> Great, thanks Kostiantyn! I'm looking for simple examples that we can<br>
>> add to GHC testsuite, if I find something I'll update the wiki page<br>
>> also.<br>
>><br>
>> I made some progress on the patch, I think I can hopefully submit<br>
>> something this weekend for reviews.<br>
>><br>
>> 2015-06-19 5:16 GMT-04:00 Kostiantyn Rybnikov <<a href="mailto:k-bx@k-bx.com">k-bx@k-bx.com</a>>:<br>
>>> Created some initial wiki-page with just one example, will keep it in mind<br>
>>> to add more as seen.<br>
>>><br>
>>> <a href="https://wiki.haskell.org/Expanding_type_synonyms_in_error_messages_proposal" rel="noreferrer" target="_blank">https://wiki.haskell.org/Expanding_type_synonyms_in_error_messages_proposal</a><br>
>>><br>
>>> On Fri, Jun 19, 2015 at 10:42 AM, Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com">simonpj@microsoft.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> On this thread, a representative collection of *reproducible examples*<br>
>>>> with the actual error message and the desired one, would be tremendously<br>
>>>> helpful.  Lacking that, it’s hard to know where to begin.   (Creating the<br>
>>>> examples takes a bit of work, I know.)<br>
>>>><br>
>>>><br>
>>>><br>
>>>> Start a wiki page!  Stuff in email threads gets lost<br>
>>>><br>
>>>><br>
>>>><br>
>>>> Simon<br>
>>>><br>
>>>><br>
>>>><br>
>>>> From: ghc-devs [mailto:<a href="mailto:ghc-devs-bounces@haskell.org">ghc-devs-bounces@haskell.org</a>] On Behalf Of<br>
>>>> Christopher Allen<br>
>>>> Sent: 19 June 2015 04:27<br>
>>>> To: Ömer Sinan Ağacan<br>
>>>> Cc: ghc-devs<br>
>>>> Subject: Re: expanding type synonyms in error messages<br>
>>>><br>
>>>><br>
>>>><br>
>>>> Just to add my own +1, having this when working with streaming libraries<br>
>>>> (I've needed it less with lens, oddly) would be a tremendous help for people<br>
>>>> learning them I think. I think I've run into the same thing as Kostiantyn in<br>
>>>> the past.<br>
>>>><br>
>>>><br>
>>>><br>
>>>> On Thu, Jun 18, 2015 at 9:42 PM, Ömer Sinan Ağacan <<a href="mailto:omeragacan@gmail.com">omeragacan@gmail.com</a>><br>
>>>> wrote:<br>
>>>><br>
>>>> It's good to see that I'm not the only one who wants this. I'm doing<br>
>>>> some GHC hacking nowadays and I'll give it a try.<br>
>>>><br>
>>>><br>
>>>> 2015-06-18 4:41 GMT-04:00 Kostiantyn Rybnikov <<a href="mailto:k-bx@k-bx.com">k-bx@k-bx.com</a>>:<br>
>>>>> I wanted to add that synonym expansion would be especially helpful in<br>
>>>>> error-messages like:<br>
>>>>><br>
>>>>> Expected type: <non-expanded, small type, like "Producer a m ()"><br>
>>>>> Actual type: <your type, like "Proxy a a' b b' m v"><br>
>>>>><br>
>>>>> I would be glad if we could have an expansions enabling flag in GHC, and<br>
>>>>> could consider turning it on by default if it will look good for that.<br>
>>>>><br>
>>>>> 16 черв. 2015 22:44 "Richard Eisenberg" <<a href="mailto:eir@cis.upenn.edu">eir@cis.upenn.edu</a>> пише:<br>
>>>>><br>
>>>>>> GHC tries hard to preserve type synonyms where possible, but of course,<br>
>>>>>> it<br>
>>>>>> can't preserve all of them. The general rule it tries to follow is:<br>
>>>>>> preserve<br>
>>>>>> vanilla type synonyms; expand type families. This is true both in<br>
>>>>>> expected<br>
>>>>>> types and actual types.<br>
>>>>>> If you have a case where you believe that GHC could preserve a type<br>
>>>>>> synonym in an expected type, submit a bug report. (Note that constraint<br>
>>>>>> synonyms are particularly hard to preserve!)<br>
>>>>>><br>
>>>>>> It would be very easy to report both the synonym-preserving form and<br>
>>>>>> the<br>
>>>>>> expanded form in an error report, at the cost of making error reports<br>
>>>>>> even<br>
>>>>>> more verbose. You're welcome to submit a feature request, and this<br>
>>>>>> would<br>
>>>>>> likely make a good first patch to GHC if you want to get your hands<br>
>>>>>> dirty.<br>
>>>>>> I'd personally prefer the feature to be protected behind a flag (to<br>
>>>>>> avoid<br>
>>>>>> seeing that `String` expands to `[Char]` everywhere, for example), but<br>
>>>>>> others may feel differently here.<br>
>>>>>><br>
>>>>>> Richard<br>
>>>>>><br>
>>>>>> On Jun 16, 2015, at 11:20 AM, Ömer Sinan Ağacan <<a href="mailto:omeragacan@gmail.com">omeragacan@gmail.com</a>><br>
>>>>>> wrote:<br>
>>>>>><br>
>>>>>>> Hi all,<br>
>>>>>>><br>
>>>>>>> While working with complex types with lots of arguments etc. errors<br>
>>>>>>> are<br>
>>>>>>> becoming annoying very fast. For example, GHC prints errors in this<br>
>>>>>>> way:<br>
>>>>>>><br>
>>>>>>>   Expected type: <type without any synonyms><br>
>>>>>>>     Actual type: <type with synonyms><br>
>>>>>>><br>
>>>>>>> Now I have to expand that synonym in my head to understand the error.<br>
>>>>>>><br>
>>>>>>> I was wondering if implementing something like this is possible:<br>
>>>>>>><br>
>>>>>>> In type error messages, GHC also prints types that are cleaned from<br>
>>>>>>> type<br>
>>>>>>> synonyms. Maybe something like this:<br>
>>>>>>><br>
>>>>>>>        Expected type: <type1><br>
>>>>>>>   (without synonyms): <type1, synonyms are expanded><br>
>>>>>>>          Actual type: <type2><br>
>>>>>>>   (without synonyms): <type2, synonyms are expanded><br>
>>>>>>><br>
>>>>>>> If this is not always desirable for some reason, we can hide this<br>
>>>>>>> behavior<br>
>>>>>>> behind a flag.<br>
>>>>>>><br>
>>>>>>> What do GHC devs think about this? Is this, in theory, possible to<br>
>>>>>>> do?<br>
>>>>>>> How hard<br>
>>>>>>> would it be to implement this?<br>
>>>>>>><br>
>>>>>>> Thanks.<br>
>>>>>>> _______________________________________________<br>
>>>>>>> ghc-devs mailing list<br>
>>>>>>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>>>>>>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
>>>>>><br>
>>>>>> _______________________________________________<br>
>>>>>> ghc-devs mailing list<br>
>>>>>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>>>>>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
>>>> _______________________________________________<br>
>>>> ghc-devs mailing list<br>
>>>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>>>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> --<br>
>>>><br>
>>>> Chris Allen<br>
>>>><br>
>>>> Currently working on <a href="http://haskellbook.com" rel="noreferrer" target="_blank">http://haskellbook.com</a><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> ghc-devs mailing list<br>
>>>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>>>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
>>>><br>
>>><br>
>> _______________________________________________<br>
>> ghc-devs mailing list<br>
>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
>><br>
><br>
</blockquote></div>