[cl-faq] faq answer: Lisp, ()'s, and indentation

Nikodemus Siivola nikodemus at random-state.net
Tue Nov 28 07:53:58 CST 2006


Larry Clapp <larry at theclapp.org> writes:

> *** I have this cool idea for a new Lisp dialect / Lisp syntax that
> doesn't involve so many parentheses!  It uses indentation to show
> structure!
>
> Since the advent of Python, this comes up on c.l.l. with some
> regularity.  We've had "sweet-expressions" and "indented Lisp" and
> probably others.
>
> Realize a few things:
>
>   @ You should use an editor that makes writing Lisp easier, like
>   Emacs or Vim.  Both of these can indent based on parenthesis
>   nesting, highlight matching parentheses, cut and paste entire blocks
>   of code based on the parentheses, and so on.  If your editor can't
>   do all that, get a new editor.
>
>   @ Lispers already read code based on indentation, but their editors
>   indent and re-indent code automatically.  \i{Removing} the
>   parentheses makes that \i{harder}.
>
>   @ After you've written and read enough Lisp, you stop seeing the
>   parentheses.  (Reports, from actual newbies who've experienced it,
>   vary from a few days to a few weeks.)  They don't \i{disappear} in
>   some magical way, but you start to see the structure of the code
>   rather than just "lots of fingernail clippings".

I think the above is sufficient, and the rest is superfluous.

>
>   @ Parentheses are an accident of history.  Any other matching
>   delimiter would work just as well.
>
>   @ Parentheses are an accident of syntax.  They show block structure,
>   nothing more.  You can view (a b c) as "(a b c)" or as
>
>                   +------+   +------+   +---------+
>                   | a | ---> | b | ---> | c | nil |
>                   +------+   +------+   +---------+
>
>   Adding or removing parentheses -- or adding indentation -- to the
>   blocks-and-arrows notation makes no sense.  To a Lisper that has
>   learned to recognize the () notation \i{as} the blocks-and-arrows
>   structure, it makes just as little sense.
>
>   @ Almost regardless of the actual merit (\i{*cough*} if any
>   \i{*cough*}) of your idea, most c.l.l.'ers (and probably other
>   Lispers, too) will greet your idea with derision and mockery.

Cheers,

  -- Nikodemus              Schemer: "Buddha is small, clean, and serious."
                   Lispnik: "Buddha is big, has hairy armpits, and laughs."


More information about the cl-faq mailing list