emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ELPA] New package: transient


From: chad
Subject: Re: [ELPA] New package: transient
Date: Thu, 30 Apr 2020 15:46:02 -0700


On Thu, Apr 30, 2020 at 1:55 PM Alan Mackenzie <address@hidden> wrote:
 What I saw was a relative newcomer to the
group (sorry, I still don't know your past and present) proposing to turn
Emacs Lisp upside down for some uncertain benefit on an uncertain
timescale, and not about to wait on any objections.

You seem to have missed the part of the conversation where he was explicitly asked to make up an example of the sort of thing that he proposed would be helpful:

On Wed, Apr 29, 2020 at 2:51 AM Philippe Vaucher <address@hidden> wrote:
> 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.

My point is simply this one: when I look at https://github.com/magnars/dash.elhttps://github.com/NicolasPetton/seq.el or https://github.com/magnars/s.el I can immediately understand how the library works and how to achieve things. I can also easily use `C-h f` to find about the function I want.

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." 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]