1. 20
  1. 2

    Nice article with a good premise. One minor objection:

    This also leads to the Lisp Curse: since everybody can make their own facsimile of a given feature, there’s no agreement in the broader community of which facsimile to get behind, so no way to target tooling or build an ecosystem.

    I don’t believe that any such problems in the Lisp community are caused by the presence of a powerful macro system.

    • Many modern non-Lisp languages have equally powerful macro systems, and don’t suffer the “Lisp Curse”.
    • During the 1980’s and 1990’s, the Lisp community managed to replace many competing Lisp dialects with Common Lisp, which also has a large library. The many competing Lisp object systems (Flavors, New Flavors, Loops, CommonLoops) were coalesced into CLOS. That shouldn’t have been possible if the thesis is true.

    Common Lisp has been static since that era, and common lispers I’ve talked to are proud of this: it’s claimed that Common Lisp is stable and has long term backwards compatibility over a period of decades, and some want this. Other Lisp dialects have different communities and some dialects evolve more rapidly. Racket looks to be healthy and dynamic.

    Any problem with a language becoming stagnant and not evolving to meet current needs is caused by problems in the community process for standardizing new changes (or by the lack of a process). The stagnation problem is harder to manage when there are many competing implementations of a shared standard, controlled by people with conflicting agendas (which is true for Lisp), and easier when there is a single implementation paired with a process that allows for language evolution. This is independent of the language design.

    Scheme stagnated for years after the collapse of the R7RS Large project. The problem was overcentralization (a small number of people with input and votes), plus the requirement for consensus. Then the SRFI process was created, and then, after this ran successfully for a number of years, the R7RS Large process has restarted, using the SRFI database as the basis for selecting new features.

    1. 6

      The many competing Lisp object systems (Flavors, New Flavors, Loops, CommonLoops) were coalesced into CLOS. That shouldn’t have been possible if the thesis is true.

      According to oral history passed on in comp.lang.lisp decades ago, Lisp was forced into the ANSI standardisation process leading to the creation of Common Lisp by its large customer (DARPA), who insisted on having multiple vendors offering the same standardized product. It seems to have been a long and painful process, barely reaching the finish line at the onset of the AI winter. (Some chapters, most notably Chapter 19 on filenames, were still in need of another editing and discussion pass when the committee decided to finish its multi-year work.) Other parts, such as the MOP (meta-object protocol) were left out of the standard entirely.