If it were a good idea, it would exist already

8 Feb

Re my previous post, I should acknowledge that ‘Lisp without parens’ is a very old idea. Old enough that any time it comes around again, long-time Lispers leap out from their parenthesis-girded fortresses to ridicule the idea. This raises a good question: if Lisp without parens is a good idea, why hasn’t it become a reality? I have three explanations:

  1. The Lisp-without-paren solutions of the past made the fatal mistake of trying to infuse Lisp with infix notation. See, for example, Dylan. This is just a bad idea, as it solves the too-many-parens problem but complicates (at best) Lisp’s homoiconicity, making macros much harder to write and thereby defeating Lisp’s one remaining unique feature.
  2. Indentation-sensitive syntax was an old idea before Python, but before Python took off, everyone ‘knew’ it was a bad idea. (And in fact, some¬†still¬†insist that indentation-sensitive syntax doesn’t work.) And it wasn’t until Python was well established that a few people began to suggest using indentation to leave Lisp parens inferred but keeping the S-expression structure intact. So the idea of Lisp-without-parens is maybe 50 years old, but the idea of Lisp-without-parens-but-keeping-S-expressions is less than a decade old. As the Python example illustrates, sometimes good ideas just take time and a few failed starts to become reality.
  3. A more general problem is that having one good idea often isn’t enough: existing technologies and their accompanying ecosystems have a lot of inertia, and the current set of users will resist the pain changes bring as long as the benefits are unclear or seemingly minor. The applicable lesson from this is that the first successful Lisp that gets rid of parenthesis will most likely include other compelling features.

I’ll submit that Animvs avoids these problems. It cleans up the parens and indentation style, but keeps the syntax homoiconic and reductively simple (simpler, in fact, than any existing Lisp, what with their hacky reader macros polluting the nice clean symbols). It also introduces new ideas other than just a new syntax.

No comments yet

Leave a Reply