<div dir="ltr">This is more about programming in general than Haskell, although Haskellers probably know it well.<div><br></div><div>I don't claim to have expert knowledge on this, but I'm gradually getting better at it.</div><div><br></div><div>When I set out to write a program, or refactor a program, or modify a program, it helps to set out my thinking in a clear way. And how I make it clear is to document my thoughts.</div><div><br></div><div>An outline is one good way to organize thoughts and is probably my main tool. But good English prose is also helpful. </div><div><br></div><div>The key factor is "editing." In what sense do I mean that? Good writers do it, and the Haskell documentation does it. I mean (1) brevity and (2) good flow. To achieve brevity, you must think about the essence of each statement and trim away the unnecessary stuff. Good flow refers to how the document builds up and modifies your concepts as you read it. A document can actually mirror an effective learning process, or influence and change your process.</div><div><br></div><div>I work with my documentation, making several editing passes. By the time I'm done, I am in a great position to write a concise and flexible program.</div><div><br></div><div>It's interesting that not only is Haskell a concise language, but the Haskell library documentation is concise. Contrast that with the Python documentation which often wanders about into areas that are irrelevant--it could easily be cut into one third its present size.</div><div><br></div><div>Mike</div><div><br></div><div><br></div></div>