<div dir="ltr">If you put calling functions before called ones, then when you reload GHCI and it dumps a lot of errors at you, the last one is usually a good place to start, because it depends on nothing else flagged as an error in the same module.<br><br>Also I always flag mutually recursive functions or types with a hard-to-miss "PITFALL: mutually recursive with <set of functions>" comment, as those are easier to understand if you begin recognizing the mutual recursion.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 12, 2021 at 2:11 AM Sven Panne <<a href="mailto:svenpanne@gmail.com">svenpanne@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Am Do., 12. Aug. 2021 um 00:33 Uhr schrieb Christopher Conforti <<a href="mailto:christopher@conforti.xyz" target="_blank">christopher@conforti.xyz</a>>:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Indeed, this is the direction I'm heading. However, I'm doing it by<br>
hand first so I can refine my methods to a point I'm satisfied with,<br>
and then build the automation afterwards, hopefully doing it right the<br>
first time. [...]</blockquote><div><br></div><div>IMHO this is exactly the wrong way round: Pick one of the existing formatters (hindent, brittany, ormolu, ...) and stick with it for a while. If you don't like what you see, you can try another one. But the main point is: These formatters embody good practice learned the hard way from lots of other people, and using them will make your code more readable not only by you, but by others, too. The "not invented here" syndrome is seldom a good idea, and consistency is far more important than small details you might not like.</div><div><br></div><div>Cheers,</div><div>   S.</div></div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Jeff Brown | Jeffrey Benjamin Brown</div><div dir="ltr"><a href="https://www.linkedin.com/in/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">LinkedIn</a><span style="font-size:12.8px">   </span><span style="font-size:12.8px">|</span><span style="font-size:12.8px">   </span><a href="https://github.com/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">Github</a>   |   <a href="https://twitter.com/carelogic" target="_blank">Twitter</a>  |  <a href="https://www.facebook.com/mejeff.younotjeff" style="font-size:12.8px" target="_blank">Facebook</a>  |  very old <a href="https://msu.edu/~brown202/" style="font-size:12.8px" target="_blank">Website</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>