If you use Vim and have "showmatch" enabled, then when you move your cursor onto a left or right parenthesis, it shows that character with a charcoal background, and the matching parenthesis with a teal background. Your mind immediately perceives the extent of the expression. Then if you press "%", your cursor moves to the matching parenthesis. You can toggle back and forth by pressing "%" repeatedly. This also works for braces and square brackets. Also you can delete, change, and yank whole expressions with the usual idioms "d%", "c%", and "y%".<p>I'm not arguing Vim over Emacs here, I just wanted to point out that Vim has excellent support for parenthesized expressions.<p>Interestingly, when I write procedural code such as C or Perl, I put a single brace on each line. For example:<p><pre><code> if (condition)
{
...
}
</code></pre>
That makes it easier for me to move whole blocks around.<p>However, when I write functional code such as Lisp or Fexl, I tend not to do that. For example:<p><pre><code> # Collect any matching entries at the front of the list.
\collect = (\match\list list end \head\tail
match head (item head (collect match tail)) end)
</code></pre>
I think that's because I tend to keep all my Fexl expressions very short, building them up step by step.<p>Also, Fexl uses ";" as a "right-pivot" operator. For example:<p><pre><code> \collect = (\match\list list end \head\tail
match head (item head; collect match tail) end)
</code></pre>
So in many cases I can avoid multiple right parentheses. The Clojure example in the article would become:<p><pre><code> \myfn-a = (\a\b zero? b a;
recur (afn (bfn (...)) a) (dec b))</code></pre>