<div dir="ltr">Something I like about functional programming is how it interfaces with natural language. Haskell, somehow to a greater extent than other languages, encourages me to divide functions into one or two-liners. Each has a type signature that means something in English. Further, each gives you the opportunity to choose a good name for the function and its arguments. After doing those things, the function is much easier to write, and much easier to read -- so much so that often you don't have to read the function body at all, just the type signature, function name and argument names.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 25, 2016 at 8:17 AM, Dudley Brooks <span dir="ltr"><<a href="mailto:dbrooks@runforyourlife.org" target="_blank">dbrooks@runforyourlife.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Ages and ages ago I saw this advice
      about programming:<br>
      <br>
      Q:  "What's the best language for a programmer to know?"<br>
      <br>
      A:  "English" (or whatever your native language is)<br>
      <br>
      -- Dudley<div><div class="h5"><br>
      <br>
      On 2/24/16 4:03 PM, Dennis Raddle wrote:<br>
      <br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      <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>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Jeffrey Benjamin Brown</div></div>
</div>