<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Speak of this detection by hlint, I can not figure out how I'm supposed to improve it for identical or nearly identical where clauses, e.g.<div class=""><br class=""></div><div class="">```log</div><div class=""><div class="">Reduce duplication</div><div class="">Found:</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>!eac = el'context eas</div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>diags = el'ctx'diags eac</div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>returnAsExpr = el'Exit eas exit $ EL'Expr xsrc</div><div class=""><br class=""></div><div class="">Why not:</div><div class="">  Combine with /xxx/Analyze.hs:741:7-27</div><div class="">hlint(Reduce duplication)</div></div><div class="">```</div><div class=""><br class=""></div><div class=""><div class="">While yes, that's verbatim copy as of a where clause, but how to *combine* them?</div><div class=""><br class=""></div><div class="">```hs</div><div class="">    where</div><div class="">      !eac = el'context eas</div><div class="">      diags = el'ctx'diags eac</div><div class="">      returnAsExpr = el'Exit eas exit $ EL'Expr xsrc</div><div class="">```</div></div><div class=""><br class=""></div><div class="">Regards,</div><div class="">Compl</div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 2020-12-07, at 21:32, Doug Burke <<a href="mailto:dburke.gw@gmail.com" class="">dburke.gw@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="">hlint does this to some extent (at least I have some copy-pasted code it keeps on pleading me to remove duplication).</div><div class=""><br class=""></div><div class="">Doug</div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Dec 7, 2020 at 8:24 AM Johannes Waldmann <<a href="mailto:johannes.waldmann@htwk-leipzig.de" class="">johannes.waldmann@htwk-leipzig.de</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">>  very cool feature would be if I could select a program phrase<br class="">
> and let it find /similar/ phrases, where a similarity metric<br class="">
> could be edit-distance with respect to language tokens ...<br class="">
<br class="">
I often wanted a tool that finds (nearly) duplicate AST sub-trees<br class="">
in a large code base, and suggests refactorings.<br class="">
<br class="">
Of course, in an IDE, it could alert me on-the-fly<br class="">
that I'm typing some code that's already present elsewhere.<br class="">
<br class="">
How might one go about implementing this?<br class="">
Actual (approximate) sub-tree matching seems the easy part;<br class="">
but I have no clear idea about whether this<br class="">
should just use syntax, or needs types as well (my guess is: yes)<br class="">
what libraries are there to provide the (annotated) ASTs, etc.<br class="">
<br class="">
- J.W.<br class="">
_______________________________________________<br class="">
Haskell-Cafe mailing list<br class="">
To (un)subscribe, modify options or view archives go to:<br class="">
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br class="">
Only members subscribed via the mailman list are allowed to post.</blockquote></div>
_______________________________________________<br class="">Haskell-Cafe mailing list<br class="">To (un)subscribe, modify options or view archives go to:<br class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br class="">Only members subscribed via the mailman list are allowed to post.</div></blockquote></div><br class=""></div></body></html>