> Overall I think it's a shame that the Emacs api wasn't designed with discoverability/consistency in mind
Would you mind elaborate on this deficiency? I don't think I quite
understand the complaint.
It's hard to really criticize because Emacs was designed ages ago.
In Emacs, parts of it are designed following the same principle, but a lot of it isn't: ...
Addressing the point, part one:
Computer languages (so far) are human languages; almost every example of such we've ever seen uses both regular and irregular rules (Esperanto exists in large part to be the exception that proves the rule). For example, in English, the vast majority of verbs are "regular verbs", and the conjugation thereof (cases, tenses, declensions, etc.) strictly follow a very orderly pattern, such as "jump". This makes them esy to learn, understand, and generate. There are also a small core of "irregular verbs", usually the most common/basic/important concepts in the language, that do not follow these patterns, and use bespoke differences for many of the conjugations. These verbs must simply be rote-learned, but their use is typically so central to communication that people memo(r)ize them relatively quickly. In English (and many other modern languages), common examples are "be", "do", and "have".
Emacs Lisp, being a human language, is likely to have these same properties. Elisp in particular is subject to many of the same factors that influenced, for example, modern English, including both partial embrace and partial rejection of historical artifacts, adjustments based on common errors, eras of "fashion" (where acceptible uses shift over time), and dialects, creoles, and pidgins (ESE versus Americanized spoken English). I studied both computer science and linguistics in the past, and I believe this entirely explains why some lisps have/prefer "first" and "rest" while others "car" and "cdr". In this case, nobody is proposing to get rid of the latter, for either regular or irregular verbs. There is, however, a suggestion ("It's a shame...") that elisp might be improved by some careful application of additional words for concepts that don't seem to be core enough to be irregular (that is, that aren't so common that everyone has already internalized the irregular forms), as evidinced by the popularity _amoung new speakers_ of libraries that add such regularity, even where irregular forms already exist (dash.el, seq.el, s.el, map.ap, f.el, etc.). Specific examples were brought up not as proposals to change code, but as an explanitory aid in response to a direct request for such.
Addressing the point, part two:
"There are only two hard things in computer science: cache invalidation and naming things."
I hope this helps,
~Chad.
P.S. I actually prefer the alternative formulation: "There are only two hard things in computer science: cache invalidation, naming things, and off by one errors."