title: Where do the function names in clojure.core.async derive from and could they use descriptive ones?
body: <p>I've recently started to use the <code>core.async</code> library and I'm a bit puzzled why it uses function names like these:</p>
  
  <ul>
  <li><code>&gt;!</code></li>
  <li><code>&gt;!!</code></li>
  <li><code>chan</code></li>
  </ul>
  
  <p>I always have to think about the number of exclamation marks for example when I'm not sure which is the <em>parking</em> version and which is the <em>blocking</em> one. This reminds me of the book "Don't make me think" and the book "Clojure Programming" where this is written:</p>
  
  <blockquote>
    <p>Clojure's syntax reduces the cognitive load necessary to read or write code ... Every time a programmer has to pause and think about this (or look it up in a manual) ... a mental page fault has occured.</p>
  </blockquote>
  
  <p>What is the explanation for this?</p>