[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